|
Название | TreeDown |
Имя файла (*.txt) | TreeDown.txt |
Описание | Осуществляет движение по дереву директорий сверху вниз |
Автор | Вахмурка |
Параметры | "%p", "%n" |
Вызываемые плагины | win, file, tc |
Иконка | |
Версия | 1.0 |
Дата обновления | 23.10.2005 |
local hwnd = win.handle("c=TTOTAL_CMD") local Path = arg(1) local Name = arg(2) local List, Counter, Slash, j, One if(select(Path, 2) == "\\") do Slash = "Script works only in directory tree, not network or special folders" messagebox("ok error", Slash, "TreeDown Script") quit endif if(file.isfolder(Path ++ Name) == "1" && Name != "") do win.sendmessage(hwnd, 0x400+51, 2003, 0) quit endif if(file.isfolder(Path ++ Name) == "0") do if(length(Path) == 3) do Path = select(Path, 2) Slash = "Last folder in root visited. Go to the next drive?" if(messagebox("yesno warning", Slash, Path ++ " root") == 7) quit win.sendmessage(hwnd, 0x400+51, 2051, 0) win.sendmessage(hwnd, 0x400+51, 2001, 0) quit endif Path = remove(Path, -1) Slash = revindex(Path, "\") Name = select(Path, Slash - length(Path)) Path = select(Path, Slash) endif Path = remove(Path, -1) for(1) List = file.listfiles(Path, 2, 0, 1) Counter = line(List, 0) if(Counter == 0) do Slash = revindex(Path, "\") Name = select(Path, Slash - length(Path)) Path = select(Path, Slash - 1) win.sendmessage(hwnd, 0x400+51, 2002, 0) else Slash = "z;" flag clear 1 for(j = 1; j <= Counter; j = j + 1) One = file.getShortPath(line(List, j)) if(file.isfolder(One) == "1" && min(One, Path ++ "\" ++ Name) != One) do flag set 1 Slash = min(One, Slash) endif endfor if(pproflag(1)) do tc.cd(hwnd, Slash) keys {home} quit else if(length(Path) == 2) do Path = select(Path, 2) Slash = "Last folder in root visited. Go to the next drive?" if(messagebox("yesno warning", Slash, Path ++ " root") == 7) quit win.sendmessage(hwnd, 0x400+51, 2051, 0) win.sendmessage(hwnd, 0x400+51, 2001, 0) quit endif Slash = revindex(Path, "\") Name = select(Path, Slash - length(Path)) Path = select(Path, Slash - 1) endif endif endfor
В своей статье Gregory приводит краткие описания и ссылки на некоторые скрипты для работы с Total Commander. Судьбу этих скриптов я вкратце описал здесь.
В частности, практический смысл я увидел только в скрипте neighbour, однако его разбор, даже поверхностный, меня разочаровал. Не буду вдаваться в подробности, ибо считаю Gregory в определенном смысле своим "крестным отцом" и учителем.
Сама идея передвижения по дереву директорий показалась мне весьма продуктивной. Поэтому я предпринял попытку самостоятельно ее реализовать. Плоды этих усилий приводятся выше и в скрипте TreeUp.
Задача состоит в том, чтобы, многократно исполняя скрипт TreeDown, пройти все директории на диске, не пропуская ни одной. Затем, получив приглашение перейти на следующий диск (что означает невозможность движения вниз), пройти обратным путем с помощью скрипта TreeUp.
Мне раньше часто приходилось жалеть, что для перехода в соседнюю (скажем, нижнюю) директорию приходится сначала бессчетное число раз переходить в родительскую, то есть вверх по дереву, а затем столь же утомительно спускаться по другой ветке. Теперь достаточно одного нажатия клавиши или одного щелчка крысы. При тестировании скриптов я много нового узнал о своих дисках.
Мне возразят, что для этого можно воспользоваться режимом Directory tree, но я увидел в таком подходе ряд недостатков.
Воспользовавшись советом Gregory, я присвоил вызову скриптов клавиши Alt+PgDn и Alt+PgUp.
У пользователя, который, как и я, частенько испытывает необходимость в таком перемещении, есть уникальная возможность сравнить, как эту задачу решили два человека (Gregory и я) и выбрать наилучшее решение.
На главную | Все о Total Commander | PowerPro | PowerPro & Total Commander |