|
|
| Название | 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 |