| View previous topic :: View next topic |
| Author |
Message |
Вахмурка

Joined: 27 Dec 2004 Posts: 2587 Location: Большая деревня Москва
|
(Separately) Posted: Mon Mar 08, 2010 16:49 Post subject: |
|
|
А в скриптах, как я понял, эту команду использовать нельзя, именно в силу | Quote: | | Без символа '<' перед командой! | Пробовал так: | Code: | <add >2Mat { cd \ } | Получается иконка, перечеркнутая красным, и ругань при запуске: "Скрипт должен начинаться с символа <". Хотелось бы... _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
| Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
|
| Back to top |
|
 |
Вахмурка

Joined: 27 Dec 2004 Posts: 2587 Location: Большая деревня Москва
|
|
| Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
|
| Back to top |
|
 |
GGS
Joined: 02 May 2009 Posts: 322
|
(Separately) Posted: Wed Mar 10, 2010 09:32 Post subject: |
|
|
MVV
Ситуация:
1. Левая панель: активная, курсор на файле в архиве
2. Правая панель: содержимое виртуальной папки созданной командой <add
3. Копирую файл слева направо <F5>
В результате файл направо в физическую папку скопировался, но слева меня "выкидывают" из архива
Возможно ли слева остаться в архиве? |
|
| Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
(Separately) Posted: Wed Mar 10, 2010 12:42 Post subject: |
|
|
А-а, есть такое дело. Просто я вызываю обновление панелей ТК после операций с VP (ведь эти операции могут изменить содержимое панелей) - а ТК при обновлении панели выходит из архива.
Кстати, не забывай, что при извлечении файлов из архива в физическую папку, на которую ссылается VP, ТК вначале извлекает файлы во временную папку, а потом только VP копирует их в папку назначения (но к данной проблеме это не относится).
У кого 1.0.0.505, обновите до 1.0.0.506, там небольшой баг, из-за которого модуль может вылетать при открытии диалога конфигурации (обращение к неуказанному параметру).  _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
| Back to top |
|
 |
GGS
Joined: 02 May 2009 Posts: 322
|
(Separately) Posted: Wed Mar 10, 2010 16:45 Post subject: |
|
|
| MVV wrote: | | при извлечении файлов из архива в физическую папку, на которую ссылается VP, ТК вначале извлекает файлы во временную папку, а потом только VP копирует их в папку назначения |
Это я заметил по выставлению атрибута "A" на извлечённый файл, при подобной операции без VP значение остаётся как было в архиве. |
|
| Back to top |
|
 |
Вахмурка

Joined: 27 Dec 2004 Posts: 2587 Location: Большая деревня Москва
|
(Separately) Posted: Sun Mar 14, 2010 11:12 Post subject: |
|
|
2MVV
В-общем, мало-мальски сложные скрипты продолжают оставаться для меня китайской грамотой. При изучении справки и примеров возникли следующие вопросы:
1) Символ " . " часто употребляется, но его формат не описан (видимо, имеется в виду корень ВП);
2) После ifcond в справке идет фигурная скобка, а в примере - круглая, да еще в кавычках;
3) Что означает запись "@ %f" в примере? Ведь %f - это маска файла, а вовсе не виртуальный путь, как написано в справке.
Эти и другие вопросы встали передо мной при решении следующей задачи: удалить ссылки на все файлы, кроме index.*, от данной директории и ниже. Справиться с рекурсией я так и не смог и упростил задачу: только в текущей виртуальной папке. Пробовал по всякому, в том числе так: | Code: | <for %f . *.* { <ifcond { %f != index.* @ %f } { <del "%f" } } | Ответь, пожалуйста, на приведенные вопросы и подскажи, как решать задачу. _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
| Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
(Separately) Posted: Sun Mar 14, 2010 14:57 Post subject: |
|
|
Здрасьте, символ точка заменяет текущую папку, как принято в виндовсах испокон времен. Корень ВП обозначается одиночным обратным слэшем.
Про скобки написано выше в мануале, но поясню еще раз - если параметр содержит пробелы, его надо заключать в кавычки, но если он содержит знак меньше, то его необходимо заключать в фигурные скобки, чтобы парсер скриптов понимал, что этот знак меньше является частью параметра, а не началом новой внутренней команды в скрипте.
После собаки в команде ifcond указывается имя файла, для которого вычисляется выражение. А %f в примере - это подстановочный символ команды for, внутри блока которой выполняется команда ifcond (какой именно символ используется в конкретной команде for, указывается в самой команде, я обычно для файлов использую %f, а для папок - %d, но если нужно использовать вложенный вызов команды for, придется использовать и другие буквы).
Сравнивать имя файла со строкой низя. В описании команды ifcond указано, какие можно использовать псевдо-константы (типа атрибутов, даты, времени и размера).
Но задача отрицания маски хорошая. Пожалуй, я добавлю для команды for флаг отрицания маски, или же возможность сопоставления имени текущего файла маске в выражении команды ifcond (скорее всего, это будет оператор вида like "index.*") - этот вариант мне кажется более широким в функциональном плане. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
| Back to top |
|
 |
Вахмурка

Joined: 27 Dec 2004 Posts: 2587 Location: Большая деревня Москва
|
(Separately) Posted: Sun Mar 14, 2010 16:46 Post subject: |
|
|
| Quote: | | символ точка заменяет текущую папку | Слабо себе представляю, как это используется. В батниках все просто: если не указан путь, предполагается текущий, иначе играем двумя точками (материнская директория) или слешем (корень). Про точку слышу впервые. Ну что же, благодаря тебе расширил свой кругозор. | Quote: | | Корень ВП обозначается одиночным обратным слэшем | ...как и корень обычного диска. | Quote: | | если он содержит знак меньше, то его необходимо заключать в фигурные скобки | Ты думаешь, я не читал справку? Нет там этого. До чего-то приходится допирать, набивая шишки, до чего-то не допирается  | Quote: | | %f в примере - это подстановочный символ команды for, внутри блока которой выполняется команда ifcond (какой именно символ используется в конкретной команде for, указывается в самой команде | Это тоже аналогично батникам. | Quote: | | В описании команды ifcond указано, какие можно использовать псевдо-константы (типа атрибутов, даты, времени и размера). | ...но в явном виде запрета на имена файлов нет. Одна из проблем состоит в том, что отчасти твой язык напоминает батники, а в чем-то сильно отличен от него - ведь в батниках использовать условия типа | Code: | if -%1 == -index.* echo Хомяк | можно с огромным нашим удовольствием. | Quote: | | Пожалуй, я добавлю для команды for флаг отрицания маски | Хорошо бы все-таки достичь функциональности батниковской команды if. Тем более, что за счет вложенных скриптов можно даже структурным программированием заняться... _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
| Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
(Separately) Posted: Sun Mar 14, 2010 17:00 Post subject: |
|
|
Две точки - надпапка, точка - текущая папка, бэкслэш - корневая папка. В ТК, если в командной строке написать точку и нажать ентер, откроется текущая папка - самый быстрый способ открыть её.
| Quote: | | Это тоже аналогично батникам. |
Ну дык откуда драл=)
Батовая команда if куда ограниченнее, чем моя ifcond.
Сделать сравнение строк будет непросто, т.к. вычислитель выражения оперирует с числами, а тут вдруг на те, строки. Так что будете довольствоваться функцией like "<маска>" для проверки имени, или его отрицанием, если таковое нужно.
На всяк случай поясняю, как работает вычислитель: строится массив-выражение, содержащий операторы и числа, при построении псевдо-константы расширяются до значений, а также вычисляются операторы (пока он один - like). Далее, вычисляется значение выражения. Так что, выражение !like "index.*" истинно только в том случае, когда имя файла (только имя, без пути) не соответствует маске.
VirtualPanel 1.0.0.510 (изменения после 1.0.0.505):
+ оператор like для команды ifcond, позволяющий проверять, удовлетворяет ли имя файла маске
* обновление панели-источника после операций убрано
* не запоминался флаг удаления всех файлов только для чтения
* ошибка в параметрах функции форматирования информационного окна (в 1.0.0.505)
Также добавлен пример удаления из текущей папки всех файлов кроме скриптов, mp3 и m3u:
| Code: | <for %f . * { <ifcond { !script && !like "*.mp3" && !like "*.m3u" @ %f } { <del "%f" } } |
_________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
| Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
(Separately) Posted: Mon Mar 15, 2010 21:03 Post subject: |
|
|
Исправляю кой-какие косяки, теперь скриптами с оператором like действительно можно пользоваться (нашел баг в обработке двойного символа % в файлах скриптов). Ну и по мелочи.
VirtualPanel 1.0.0.520 (изменения после 1.0.0.510):
+ команда <exec позволяет запрашивать параметр, если он начинается с символа '?'
+ раскрываются переменные окружения в параметрах запускаемых программ
+ команда "?" отображает справку
+ если параметр имеет вид ?:"<текст>", текст используется как подсказка в окне запроса параметра
* ошибка обработки "%%" в файлах скриптов _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
| Back to top |
|
 |
MVV

Joined: 15 Oct 2009 Posts: 4815 Location: Ростов-Дон
|
(Separately) Posted: Thu Mar 18, 2010 19:35 Post subject: |
|
|
Ребята, у кого есть доступ к бетам 7.51, проверьте один баг при работе с файловыми системами. Он был указан здесь под индексом D.
Берем, например, папку Windows (чтоб побольше), кидаем в VP. ТК на некоторое время подвисает, определяя количество файлов в папке и всё такое, потом копирует. Здесь все логично. Но если при обычном копировании юзер может нажать Esc и начать копирование без подобных расчетов, то при копировании в файловую систему - казалось бы, нажатие Esc отменяет подсчет, но после нажатия Esc при каждом вызове функции установки прогресса ТК возвращает флаг отмены юзером копирования - даже после того, как пользователь изъявил желание продолжить копирование.
Таким образом, после однократного нажатия Esc имеем запрос на прерывание операции после копирования каждого очередного файла, что, согласитесь, не айс, особенно если файлов сотня или более того.
Подумываю запостить это в баги и уверен, что исправить это элементарно, но, возможно, это уже исправлено, а доступа к приватным бетам у меня нет. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
| Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10520 Location: Россия, Саратов
|
(Separately) Posted: Thu Mar 18, 2010 21:40 Post subject: |
|
|
MVV
Это поведение не исправлено ни в 7.51, ни в 7.55. Так что можно репортить. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
| Back to top |
|
 |
ask-rus

Joined: 10 Nov 2009 Posts: 2077 Location: Russian Federation
|
(Separately) Posted: Sun Mar 21, 2010 12:08 Post subject: |
|
|
MVV
Спасибо за плагин! Буду рекомендовать его друзьям и знакомым.
Жаль ничем пока не могу помочь в его развитии... _________________ «Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|