1) Внутренние команды не обязаны выполнять все пожелания:) Почему бы тебе не написать себе такой вариант скрипта >add, который удовлетворил бы все твои запросы, и пользоваться им вместо команды <add (благо, проверять существование файла и спрашивать у юзера возможность имеется)? Кстати, команда <add раньше заменяла существующие объекты, но это было не всегда безопасно, т.к. при замене папки файлом все содержимое папки уничтожалось. Поэтому с версии 1.0.0.560 по умолчанию команда <add не заменяет объекты, а заменяет их только при указании флага /f.
2) Лучше вместо строчки
написать
- будет работать независимо от расположения и имени файла скрипта.
Кстати, можно добавить проверку на наличие параметра-маски и, если он не задан, запускать себя же, передав в качестве маски звездочку.

Кстати, без команды <cd тоже можно обойтись.

В конечном итоге скрипт может принять следующий вид:
Код: Выделить всё
<add /f \>MaskDelKeepIndex { <ifdef "%2" { <for %%f "%1" "%2" { <ifcond { !script && !like "index.*" @ %%f } { <del "%%f" } } <for /d! %%d "%1" "*" { <exec "%0" "%%d" "%2" } } { <ifdef "%1" { <exec "%0" "%1" "*" } { <exec "%0" "." "*" } } }
Кстати, удобно вначале писать скрипт, указывая каждую команду на новой строке, с увеличенной табуляцией вложенных блоков:
Код: Выделить всё
<add /f \>MaskDelKeepIndex {
<ifdef "%2" {
<for %%f "%1" "%2" {
<ifcond { !script && !like "index.*" @ %%f } { <del "%%f" }
}
<for /d! %%d "%1" "*" { <exec "%0" "%%d" "%2" }
}
{
<ifdef "%1" { <exec "%0" "%1" "*" } { <exec "%0" "." "*" }
}
}
(лишние разрывы строк и табуляции потом можно удалить regex-заменой "
(\r\n|\t)+" на пробел или несколько пробелов)
3) Я сам довольный, что теперь можно вызывать внутренние команды с кнопочек панели инструментов.

Еще была мысль написать нечто вроде браузера виртуальной системы с поддержкой перетаскивания
отдельно от виртуальной панели, чтобы не засорять её, но не знаю, как обращаться к ней - хотя, если это будет отдельный плагин ТК, то в принципе будет возможно передать ему указатель на экземпляр виртуальной системы и использовать его из нескольких потоков (благо, сейчас сам экземпляр имеет свою критическую секцию для многопоточного доступа).
