Скрипты - уникальный инструмент для достижения различных целей в работе с файлами и не только, особенно в файловом менеджере, даже если вы ничего раньше об этом ничего не слышали и не знали, то путём простых движений вы можете оптимизировать свои действия Тема тестирования скриптов создана для увеличения функциональности Total Commander Каждый может выложить свой скрипт написанный на любом языке: vbs, js, hta, au3,ahk, bat,cmd... главное, чтобы он относился как-то к Total Commander, можно было им воспользоваться и к нему было должное описание к применению. Каждый может протестировать, дать свой комментарий и ...[move]если есть интересная идея, вы можете поделиться ей и заказать скрипт, а вдруг она покажется интересной для авторов...[/move] Всё это делается для тех, кто хочет экономить время и автоматизировать работу Огромное спасибо участникам, авторам и всем повлиявшим на тему
Перед использованием скриптов, проэкспериментируйте сначала на "ненужных" файлах (у меня на разных дисках есть несколько папок с разными файлами для экспериментов) Как только вы убедитесь, что скрипт работает как надо, пользуйтесь на реальных файлах
- ряд скриптов могут не сработать: 1. Из-за раскладки клавиатуры (переключите раскладку, повторите заново) 2. Из-за неправильно указанных параметров (внимательно читайте комментарии внутри скриптов) 3. Из-за параметров %p и %P в командной строке и тому подобных (на практике иногда надо их брать кавычки "%P") 4. Из-за 2-х запущенных копий Total Commander (редко, но бывает) 5. Из-за неверно указанных путей использованных файлов (внимательно проверьте пути) 6. Из-за недостающих дополнительных утилит, использующих скриптом (проверьте есть ли они у вас) 7. Из-за очень большого количества файлов, посланных для обработки скрипту [indent][indent]- Может показаться, что скрипт не сработал, возможно он ещё работает. Чтобы в этом убедится откройте Диспетчер задач и посмотрите процесс - Скрипты, связанные с посланием команд Total Commander'y при очень большом количестве файлов работают неадекватно. (попробуйте в Тотале просто выделить 100.000 файлов - это займёт несколько секунд, сколько точно, никто сказать не может - это зависит от многих факторов. Так же и скрипты, связанные с фильтрацией, выделением... может показаться, что глючат - на самом деле сам Тотал не справляется с посланной ему командой, если речь идёт об обработке большого количества файлов)[/indent][/indent] --------------------------------------------------------------------------------------------------------------------------------- 8. Из-за ошибки автора - Сообщайте об ошибках
Для вызова скриптов в пользовательских командах или кнопках используются параметры:
? - В качестве первого параметра вызывает перед стартом программы диалоговое окно, содержащее указанные далее параметры. Вы можете изменить их перед стартом программы и даже отменить запуск
%P - Вставляет в командную строку исходный путь, включая обратную косую черту (\) в конце %N - Помещает в командную строку имя файла с расширением под курсором %O - Помещает в командную строку текущее имя файла без расширения %E - Помещает в командную строку текущее расширение (без предшествующей точки).
%T - Вставляет текущий каталог назначения %M - Помещает в командную строку текущее имя с расширением файла в каталоге назначения
%S - Помещает в командную строку имена всех выделенных файлов. Имена, содержащие пробелы, будут взяты в кавычки. Имейте в виду, что длина командной строки не может превышать 32767 символов %S10 - Помещает в командную строку имена не более чем 10 первых выделенных файлов. Вы можете использовать любое другое число для ограничения количества файлов, передаваемых в программу
%R - Работает аналогично %S, но для выделенных файлов в целевой панели
Замечания:
• %N и %M вставляют длинное имя, в то время как %n и %m вставляют имя DOS (8.3) %P и %T вставляют пути с длинными именами каталогов, а %p и %t — с короткими То же самое для %o, %e и %s и %r
• Если приписать %P, %p, %T или %t непосредственно перед %S или %s (без пробела между ними!), то к имени каждого файла из списка будет добавлен путь. При наличии пробелов полный путь автоматически заключается в кавычки. Пример: %P%S помещает в командную строку список всех выделенных файлов с полными путями
%L, %l, %F, %f, %D, %d, %WL, %WF, %UL, %UF - Создаётфайл списка в каталоге, заданном переменной TEMP, с именами выделенных файлов и каталогов и добавляет имя этого файла списка в командную строку. Список удаляется автоматически, когда запущенная программа завершается. Можно создать файл списка в одном из 10-ти форматов:
%L - Длинные имена файлов, включая полный путь, например, c:\Program Files\Long name.exe %l - (L в нижнем регистре) Короткие имена файлов, включая полный путь, например, C:\PROGRA~1\LONGNA~1.EXE.
%F - Длинные имена файлов без пути, например, Long name.exe. %f - Короткие имена файлов без пути, например, LONGNA~1.EXE.
%D - Короткие имена файлов, включая полный путь, но с использованием набора символов DOS для диакритических знаков. %d - Короткие имена файлов без пути, но с использованием набора символов DOS для диакритических знаков.
%UL, %UF - Аналогично %L и %F, но файлы списка создаются в Unicode-формате UTF-8 (с сигнатурой). %WL, %WF - Аналогично %L и %F, но файлы списка создаются в Unicode-формате UTF-16 (с сигнатурой).
%v - Помещает в командную строку имя виртуального файла при работе с FS-плагинами виртуальных панелей, для которых %N вставляет имя реального файла (в файловой системе), на который указывает выбранный элемент. %V - То же, что и %v, но с полным путём (включая имя плагина).
%X - Трактует последующие параметры как относящиеся к левой/правой панелям вместо исходной/целевой: %P, %p (путь слева), %T, %t (путь справа), %N, %n (имя слева), %M, %m (имя справа), %S, %s (выделенные слева), %R, %r (выделенные справа). Пример:%X%P %T - передаёт текущий путь слева и справа, например, для внешнего инструмента синхронизации.
%x - Трактует последующие параметры снова как относящиеся к исходной/целевой панелям. Пример:%X%P %x%P - передаёт текущий путь в левой панели и в исходной.
%Z - Будучи указан в любом месте в списке параметров, разрешает передавать архивы в качестве части пути во внешние программы для %P и %T, когда в панели открыто содержимое архива. Пример:%Z%P - передаёт имя открытого в панели архива во внешнюю программу.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %% - Вставляет одиночный знак процента, важно для переменных окружения, которые прописываются в параметрах Пример: %%COMMANDER_PATH%%\
1. Указанный в секциях "код" текст необходимо сохранить в виде текстового файла с именем и расширением, указанным в начале кода. 2. Затем нужно перетащить этот файл на панель инструментов Total Commander - создастся кнопка. 3. Созданную кнопку необходимо подредактировать - нажать правой кнопкой мыши на созданной кнопке - выбрать "Изменить". 4. Изменение полей [indent][indent] а)Команда: путь\к\скрипту (обычно он уже есть) для скриптов au3, ahk перед скриптом необходимо поставить путь запускаемого преложения пример: %COMMANDER_PATH%\Utilities\Scripting\AutoIt\AutoIt3.exe "%COMMANDER_PATH%\Scripts\TextWork\InsertText.au3" б)Параметры: строку нужно заполнить согласно описанию в шапке скрипта. пример: %L в)Путь запуска: лучше это поле очищать (для bat, cmd и некоторых скриптов он необходим) г)Файл значка: редактируются "по вкусу" д)Подсказка: берётся из описания к скрипту, с учётом тех или иных параметров[/indent][/indent]
1. В связи с тем, что функции во многих скриптах повторяются, ряд из них вынесены в отдельные файлы Рекомендую создать папку Include скачайте и положите туда эти файлы:
Скачать:TCMCWindow (Версия 1.3 от 31.01.2012) Скачать:TCMCWindow (Версия 1.5. от 22.03.2012)
Что может утилита совместно с TCMC - посылать команды Total Commander - посылать клавиатурные нажатия окнам - вводить строки в окна - посылать текст в буфер обмена - возвращать текст из буфера обмена - устанавливать необходимую паузу между любыми действиями
Описание прилагается в архиве с программой Так же в архиве лежит утилита TCMC
Дата: Суббота, 25.02.2012, 22:02 | Сообщение # 221
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 431
Quote (yaroslavi)
Вставил уже не относительный, а абсолютной путь
Вставить текстовый редактор надо в параметр кнопки, в скрипте лишь примеры Когда перенесёшь файл на панель инструментов, нажми правой кнопкой мыши на этой кнопке - изменить и там где параметры вставь %%COMMANDER_PATH%%\Programs\Text\Texter2\Texter2.exe Читайте:Справочные материалы по работе c TC + Онлайн справка TC
Дата: Суббота, 25.02.2012, 23:09 | Сообщение # 224
Полковник
Зареген: 11.04.2010
Всего сообщений: 50
Вставил путь в "Параметры". Теперь получается другая фигня: почему-то открываются... две копии Текстера, но при этом ни в одной из них нет текста из буфера...
Вот, как у меня все прописано в параметрах кнопки:
Дата: Суббота, 25.02.2012, 23:53 | Сообщение # 226
Полковник
Зареген: 11.04.2010
Всего сообщений: 50
Я убрал из Вашего скрипта путь к Текстеру - в АкелПаде все открылось нормально, но с Текстером какая-то ерунда: ни в Вашей сборке, ни в моей Текстер не открывается с содержимым буфера, и при этом упорно открываются дае пустые копии... Дальше - больше, странности продолжаются. В моей сборке есть еще один редактор - ListEdit, я попробовал прописать путь к нему. В результате запускаются две копии: одна с содержимым буфера, другая пустая...
То есть, как я понимаю, АкелПад не запускает две копии просто потому, что у него стоит на это явный запрет, а в целом, что-то в скрипте заставляет любой редактор запускаться дважды...
Да, открывается редактор практически сразу.
Сообщение отредактировал yaroslavi - Воскресенье, 26.02.2012, 00:02
Дата: Воскресенье, 26.02.2012, 01:05 | Сообщение # 228
Полковник
Зареген: 11.04.2010
Всего сообщений: 50
Скачал. Проверил. Как говорила кэролловская Алиса: "Все страньше и страньше". Текстер по-прежнему запускается двумя копиями и без содержимого буфера, Бред из Вашей сборки запустился в единственном экземпляре, но тоже девственно чистый. Такая же история - с Иероглифом (начал уже перебирать все имеющиеся под рукой текстовые редакторы) - одна копия, ничего из буфера. Похоже, полноценно этот скрипт работает только с АкелПадом...
Дата: Воскресенье, 26.02.2012, 06:50 | Сообщение # 229
Полковник
Зареген: 09.12.2011
Всего сообщений: 89
Andrey_A AkePad лучше запускать с параметрами: /Command(4101) /Command(4191)
Текстер2 открывает два окна, п.ч. SendKey"^.." в семёрке отрабатывает как SendKey"^+.." Поэтому тут надо так поступать:
Code
' Открыть редактор и вставить содержимое буфера, если есть ' В поле "Команда" после пути к скрипту через пробел написать путь к редактору ' Пример: %COMMANDER_PATH%\Scripts\OpenEditor&Paste.vbs "%COMMANDER_PATH%\Programs\Editors\Texter2\Texter2.exe" '=========================================================================================== With CreateObject("WScript.Shell") Set Exec = .Exec(WScript.Arguments(0)) : PID = Exec.ProcessID Do : A = .AppActivate(PID) : Loop Until A : .SendKeys "+{INSERT}" End With
Я кстати не стал бы ставить ограничение c мацанием IE. Ну, откроет человек редактор, ну поймёт, что в буфере ничего нет - возьмёт, да и сам копипастом вставит. Сообщения же могут раздражать. И, между прочим, раз ты такой любитель пихать в скрипт столько исключений, то почему ты проверку на работу с буфером на IE как я не делаешь? Иначе может не сработать.
Сообщение отредактировал Flasher - Воскресенье, 26.02.2012, 10:12
Дата: Воскресенье, 26.02.2012, 11:22 | Сообщение # 230
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 431
Quote (Flasher)
AkePad лучше запускать с параметрами: /Command(4101) /Command(4191)
Мне это известно. Про AkelPad я изначально писал - там не нужен скрипт
Code
TOTALCMD#BAR#DATA %COMMANDER_PATH%\AkelPad.exe /Command(4101) /Command(4191) %COMMANDER_PATH%\AkelPad.exe Вставить в новую вкладку текст из буфера в AkelPad
-1
Quote (Flasher)
в семёрке отрабатывает как SendKey"^+.."
Я с самого начала подозревал подобное. Сам не люблю методы с SendKey, потому что не стабильны на разных системах и условиях... Я не на семёрке... Ну раз не идёт, значит это индивидуальная задача для конкретного редактора. Заработала и отлично!
Quote (Flasher)
И, между прочим, раз ты такой любитель пихать в скрипт столько исключений, то почему ты проверку на работу с буфером на IE как я не делаешь?
Дата: Воскресенье, 26.02.2012, 11:34 | Сообщение # 231
Полковник
Зареген: 09.12.2011
Всего сообщений: 89
Quote (Andrey_A)
Ну раз не идёт, значит это индивидуальная задача для конкретного редактора.
Мой вариант подойдёт для весомой группы редакторов, не для всех увы, т.к. у некоторых редакторов активация заголовка вызывает деактивацию рабочего поля. Если надо, могу перечислить эти редакторы. Но для тех, что подходит, этот способ куда уместнее, т.к. не нужно париться с выставлением паузы.
Quote (Andrey_A)
Пока всё работает и так.
Я не про тебя, как ни странно, пишу, а про всех потенциальных и реальных пользователей сборки и скриптов. Если ты ещё не знаешь об условиях, я тебе расскажу. На wincmd.ru как-то уже делал это.
Сообщение отредактировал Flasher - Воскресенье, 26.02.2012, 11:56
Дата: Воскресенье, 26.02.2012, 11:35 | Сообщение # 232
Полковник
Зареген: 11.04.2010
Всего сообщений: 50
Господа, я восторженно внимаю разговору двух скриптописцев, не понимая при этом ни слова, но наслаждаясь самим фактом своего присутствия при беседе двух ученых мужей
Но все-таки, если можно, поясните непосвященному: что получилось в результате? Можно с этим что-то сделать, или овчинка просто не стоит выделки?
Дата: Воскресенье, 26.02.2012, 12:55 | Сообщение # 236
Полковник
Зареген: 11.04.2010
Всего сообщений: 50
Ну, да, закрались, предыдущий-то вариант куда длиннее был... Но вы правы - все гениальное просто. Просто я еще не знал, что Вы уже гениальный, думал - пока только безумно талантливый...
Добавлено (26.02.2012, 12:34) --------------------------------------------- Только уточните, пожалуйста, все-таки, как быть с этим Вашим скриптом? сохранить его текст как OpenEditor&Paste.vbs и потом перетащить на панель как кнопку, или просто вставить как кнопку, ничего никуда предварительно не сохраняя?
Добавлено (26.02.2012, 12:55) --------------------------------------------- Что-то у меня опять странный косяк вылез, при попытке использования новой кнопки вылезает такое сообщение: " "OMMANDER_PATHPrograms\Text\Texter2\Texter2.exe" не существует. Создать новый с таким именем?"
При том, что все пути у меня вроде как прописаны правильно, вот картинка:
Дата: Воскресенье, 26.02.2012, 12:56 | Сообщение # 237
Полковник
Зареген: 09.12.2011
Всего сообщений: 89
yaroslavi, по-моему, Андрей уже настролько всё разжевал, что я удивляюсь, почему до сих пор возникают эти вопросы. Код скрипта по определению никак не способен сохраниться на панель. У кнопок есть свой чёткий синтаксис, который ТС и распознаёт при вставке (подробней непосредственно в справке, а также здесь, здесь, здесь, ну и памятку прочесть не помешает). Одна из причин, по которой пользователей сборок не консультируют на wincmd.ru - привычка к готовенькому без самостоятельного изучения справочных материалов.
Quote (yaroslavi)
При том, что все пути у меня вроде как прописаны правильно
написано же "Пример". Это значит, что путь может быть совершенно другим. В сборке пути иные, смотрите либо сопоставляя с папками ТС, либо с предыдущими скриптами.
Сообщение отредактировал Flasher - Воскресенье, 26.02.2012, 13:05
Дата: Воскресенье, 26.02.2012, 13:00 | Сообщение # 238
Полковник
Зареген: 11.04.2010
Всего сообщений: 50
Поверьте, я достаточно давно занимаюсь конструированием своей сборки и меня тоже часто раздражают вопросы людей, не пытающихся вникнуть в суть вопроса, а требующих немедленных рецептов, которые не работают во второй раз именно по тому, что человек не понимает самого механизма. В данном случае меня просто смутил размер Вашего скрипта, я допустил мысль, что, возможно, я что-то понял неправильно. Спасибо, что разъяснили.
Дата: Воскресенье, 26.02.2012, 13:15 | Сообщение # 240
Полковник
Зареген: 11.04.2010
Всего сообщений: 50
Кстати, я, кажется, разобрался, в чем причина одной неполадки, но вылезла другая... Я тщательно скопировал текст Вашего скрипта, но там были указаны одинарные знаки %. Я добавил еще по одному: %%COMMANDER_PATH%%\Programs\Text\Texter2\Texter2.exe Теперь редактор щапускается мгновенно и с содержимым буфера, но почему-то имеет такой вот вид:
Увы, не понял, какое отношение имеет к размеру скрипта знание кнопочного синтаксиса ТС.
Весьма отдаленное. Просто Ваш скрипт был таким коротким, что для меня, человека, совершенно не знающего скрипового языка, как, впрочем, мало разбирающегося в кнопочном синтаксисе, текст скрипта выглядел как бы несуществующим. Ну, простите, неуча...
Quote (Flasher)
Статьи, которые я привёл, смотрели?
Теперь уже посмотрел. Век живи - век учись. Спасибо за науку...