Скрипты - уникальный инструмент для достижения различных целей в работе с файлами и не только, особенно в файловом менеджере, даже если вы ничего раньше об этом ничего не слышали и не знали, то путём простых движений вы можете оптимизировать свои действия Тема тестирования скриптов создана для увеличения функциональности 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
Дата: Пятница, 17.02.2012, 12:35 | Сообщение # 181
Лейтенант
Зареген: 16.02.2012
Всего сообщений: 14
перегруз. комп вырубило. страшные тормоза были А вот теперь мысли вслух: Андрей, безусловно, провел колоссальную работу по этой сборке. Я чесно в А-Е от этой проделанной работе. Но. Есть еще куча недоработок. Много скриптов неработают. Много чисто синтаксиса, ошибок в кнопках, но... Всеравно, все надо допиливать, и все эти огрехи ни в коей мере не умаляют поистине титаническую работу. Удачи тебе Андрей!
Добавлено (17.02.2012, 12:35) --------------------------------------------- Flasher, Насчет редактора. Собсно сие без разницы в каком приложении выделение обрабатывать. Эти проги нинзя, пунтосвишер как-бы клавиатурные шпионы по классу. Висят как служба и отслеживают выделение в любом приложении. Выделил словосочетание они уже знают, что выделено, и при нажатии на ИХ сочетание кнопок , не обязательно СкроллЛоок, они выполняют действие. В данном случае надо чтоб такая прожка отсылала запрос на сайты. На нинзя у меня выглядит так:
выше постами я давал примеры запросов так там значек # в конце строчки это и есть выделенное надеюсь правильно обрисовал тему P.S. Тот-же CLCL менеджер буфера так-же работает. Все что выделено автоматом в буфер
Сообщение отредактировал JKT - Пятница, 17.02.2012, 21:35
Дата: Суббота, 18.02.2012, 00:22 | Сообщение # 182
Полковник
Зареген: 09.12.2011
Всего сообщений: 89
Никакой новой информации. Я просил дать весь список. И не понял, как может быть всё равно, какое приложение. Одно дело - редактор, другое - выделенные элементы в панели ТС. Если работать именно с буфером, то проблема восстановления картинки не так просто решается, поэтому лучше использовать объектную модель конкретного редактора без использования буфера. И ещё нужно понять, каким браузером открывать - тем, что идёт по умолчанию или каким-то портабельным.
Сообщение отредактировал Flasher - Суббота, 18.02.2012, 03:35
Дата: Суббота, 18.02.2012, 10:35 | Сообщение # 183
Лейтенант
Зареген: 16.02.2012
Всего сообщений: 14
Flasher, Ну редакторы обычно cтандартный Блокнот, Notepad++. Akelpad, EditPlus, Word. Ну это мои часто используемые Браузер по умолчанию который в системе
Quote (Flasher)
И не понял, как может быть всё равно, какое приложение
Ну вот например QTranslate переводчик, абсолютно в любом приложении, хоть выделил в режиме переименовать файл в ТС, хоть любой текст в любом редакторе, он перехватывает и выводит значек при нажатии на который отсылается запрос в Гугл-перевод.
Дата: Суббота, 18.02.2012, 11:28 | Сообщение # 184
Полковник
Зареген: 09.12.2011
Всего сообщений: 89
JKT Не вижу списка всех шаблонов. Вот так и знал, что сейчас QTranslate назовёшь. Не знаю пока такого компонента, который работает с выделенным текстом. Кое-что есть, но я не уверен, что подойдёт. Скорее придётся через буфер, раз отовсюду надо.
Теперь вопрос: что делать с многострочным текстом? Каждая строка - отдельные слова для запроса или что?
Сообщение отредактировал Flasher - Суббота, 18.02.2012, 11:32
Дата: Суббота, 18.02.2012, 12:06 | Сообщение # 185
Лейтенант
Зареген: 16.02.2012
Всего сообщений: 14
Flasher, Ну конечно про многострочные речь не идет. Обычно человеку надо запрос по слову, названию программы, название фильма, обычно ограничивается 2-3-4 слова есно в одной строке. Можно через буфер в связке с CLCL. Тот , как я выше говорил отслеживает в любом приложении выделенное и автоматом себе в буфер. Ну что-то типа. Я-ж не программер, посему незнаю этих тонкостей, но вот, что на ум приходит: Если стоит CLCL, который все выделенное себе в буфер, то просто брать из буфера и отсылать команду в браузер. Имхо самый оптимальный вариант. Этот менеджер буфера проверен временем (у меня он за пару лет не падал), безглючный, во всяком случае на ХР, на 7 нету возможности проверить. всего 130kb весит. "CLCL бесплатна, имеет русскоязычный интерфейс, не требует установки. "
Дата: Суббота, 18.02.2012, 13:13 | Сообщение # 186
Полковник
Зареген: 09.12.2011
Всего сообщений: 89
JKT CLCL тут роли никакой не сыграет. Можешь меня на тему софта не просвещать, я сам тебе больше расскажу, и аналогов приведу ещё несколько, если надо. Как работать с буфером в WSH я и так прекрасно знаю. Сейчас от тебя одно требуется (уже который раз прошу): привести все поисковые шаблоны для теста.
Дата: Суббота, 18.02.2012, 15:10 | Сообщение # 190
Полковник
Зареген: 09.12.2011
Всего сообщений: 89
Ага, не увидел в куче. Там, где решётки на конце - убери их в списке.
Code
' Открыть web-страницы из списка в браузере с поиском выделенной фразы или файла в TC ' Параметры: "<Путь к списку>" "%O" ' В файле-списке для сайтов с кодировкой UTF-8 нужно писать спереди двоеточие '=======================================================================================
With CreateObject("WScript.Shell") TCP = .Environment("Process")("COMMANDER_PATH") File = .ExpandEnvironmentStrings(WScript.Arguments(0)) If TCP = "" Then P = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\1407" A = .RegRead(P) If A > 0 Then .RegWrite P, 0, "REG_DWORD" Set IE = CreateObject("InternetExplorer.Application") IE.Navigate("about:blank") T = IE.Document.ParentWindow.ClipboardData.GetData("text") : .SendKeys "^C" C = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text") If InStr(C, vbLf) > 0 Then C = Left(C, InStr(C, vbCr) - 1) IE.Document.ParentWindow.ClipboardData.SetData "text", Trim(T) : IE.Quit Set IE = Nothing : If A > 0 Then .RegWrite P, A, "REG_DWORD" Else C = WScript.Arguments(1) : End If End With If Trim(C) = "" Then WScript.Quit : C = Replace(C, " ", "+") With CreateObject("ScriptControl") .Language = "JavaScript" : Set This = .Eval("this") : Cl = This.encodeURIComponent(C) End With : Set this = Nothing
With CreateObject("Scripting.FileSystemObject") For Each F in Split(.OpenTextFile(File, 1).ReadAll, vbNewLine) F = Trim(F) If Left(F, 1) = ":" Then F = Mid(F, 2) : C = Cl End If If InStr(F, "http") Or InStr(F, "ftp") Then With CreateObject("Shell.Application") If InStrRev(F, "#") = 0 Then .Open(F & C) Else .Open(Replace(F, "#", """" & C & """")) End With End If Next End With
Сообщение отредактировал Flasher - Суббота, 25.02.2012, 08:40
Дата: Суббота, 18.02.2012, 15:35 | Сообщение # 191
Лейтенант
Зареген: 16.02.2012
Всего сообщений: 14
Flasher, Ога. А вотэтот скрипт как-бе где работает? Я вроде текст почитал. Он будет тарахтеть после закрытия тотала? Извиняюсь за свой албанский. НО. Сие вносит изменения в реестр? отслеживать будет нажатия клавиш после закрытия тотала
Дата: Суббота, 18.02.2012, 15:44 | Сообщение # 192
Полковник
Зареген: 09.12.2011
Всего сообщений: 89
JKT Сделай кнопку в TC или повесь ярлык в какой-нибудь панели быстрого запуска (TLB, например, или что там у тебя) с прописью параметра и горячей клавиши. Скрипт срабатывает единожды при вызове. В реестре он делает только временную правку (маленький параметр безопастности), если потребуется. А слежку после создания ярлыка производит либо система либо программа-панель.
Сообщение отредактировал Flasher - Суббота, 18.02.2012, 16:30
Дата: Суббота, 18.02.2012, 16:43 | Сообщение # 193
Лейтенант
Зареген: 16.02.2012
Всего сообщений: 14
Flasher, Объясни для недалеких. Я копирнул сей скрипт, разместил на панели, а там "параметр путь к списку". Я так понимаю, что этот список в файле txt и лежать он должен рядом с этим vbs? И в этом txt файле именно те все шаблоны?
Дата: Суббота, 18.02.2012, 16:50 | Сообщение # 194
Полковник
Зареген: 09.12.2011
Всего сообщений: 89
JKT Лежать список может где угодно. Главное путь правильно указать. Да, шаблоны (решётка из приведённых там только у одного адреса остаётся), но не все, а нужные. Списков как и кнопок может быть сколь угодно. Сомневаюсь, что есть смысл совмещать kinozal.tv и wincmd.ru, например. Ты в какую панель-то его засунул? Если в ТС-шную, то глобальный хоткей так тебе не повесить, нужно в ту, что крепится у тебя на рабочем столе.
Сообщение отредактировал Flasher - Суббота, 18.02.2012, 17:05
Дата: Суббота, 18.02.2012, 17:11 | Сообщение # 195
Лейтенант
Зареген: 16.02.2012
Всего сообщений: 14
Flasher, Я как-бы чайник. Ты просто расскажи куда кинуть сей файл с шаблонами, чтоб скрипт их подхватил при запуске. У меня, например %COMMANDER_PATH%\Scripts\Poisk.vbs Куда мне кинуть сей текстовик с шаблонами? рядом с vbs? В параметрах скрипта прописать имя абсолютное или достаточно будет %COMMANDER_PATH%? Вопрос, в текстовике чисто шаблоны с решеткой в конце или без? Камрад, ну распиши для слабоумных порядок действий Пожалуйста
Дата: Суббота, 18.02.2012, 17:26 | Сообщение # 196
Полковник
Зареген: 09.12.2011
Всего сообщений: 89
JKT Я же написал, что местоположение списка не имеет значения. Хоть куда кинь. Можешь и рядом. Если бы там было только имя без пути, то вопрос был бы уместен. Если ты создаёшь кнопку в TC, то в параметрах знак процента для переменной окружения не забывай сдваивать (это справочная информация, см. внизу спойлера по параметрам в шапке топика). Про решётку уже дважды написал. Что непонятно? Концевые решётки надо убрать.
Добавлено (18.02.2012, 17:26) --------------------------------------------- Что касается ярлыка, то нужно сперва понять, пользуешься ли ты спецпанелями или нет. Если да, то какими?
Сообщение отредактировал Flasher - Суббота, 18.02.2012, 23:24
Дата: Пятница, 24.02.2012, 22:59 | Сообщение # 197
Лейтенант
Зареген: 16.02.2012
Всего сообщений: 14
Flasher, Огроменоое тебе спасибо за скрипт. Звиняй, что долго мя не было, праздники.. гг... Но! http://s2.ipicture.ru/uploads/20120224/x5JdWLqh.jpg http://s2.ipicture.ru/uploads/20120224/NjmsWVNo.jpg Как видно тут че-то в кодировках отсыла запроса. Сам проверил на гугле, яндексе, все пашет, запрос правильный Вот запрос яндекса http://s1.ipicture.ru/uploads/20120224/G2RDq3GS.jpg Запрос к руборду ответ: " Not Found The requested URL /forum.c....&word=100+ответов+от+ÑкÑпертов was not found on this server." Запрос из названия файла в ТС, просто выделил и нажал на кнопку скрипта. Выделенный файл "100 ответов от экспертов" Еще раз, в поисковиках, данный запрос корректно распознался без этих кракозябров
И чесно, я не понял как этот скрипт работает из других приложений, тех-же редакторов. В ТС все пучком, выделил - пошел запрос, ну поправить кодировки, а , допустим с блокнота как выделение?
Сообщение отредактировал JKT - Пятница, 24.02.2012, 23:34
Заранее прошу прощения, если вопрос звучит непрофессионально. Как можно автоматизировать процесс: в большинстве папок с программами у меня есть файл с описанием: WhatIsIt.txt. Как сделать файл descript.ion для каждой папки и - опционально - для всех папок, входящих в общую директорию, например, в Programs?
Создание текстового файла с содержимым буфера обмена или именем из буфера обмена
Я, как правило создаю файлы с описанием к программам в текстовом файле с названием WhatIsIt.txt,, который помещаю в папку с программой. Для этого я копирую описание, открываю редактор Texter, в котором уже настроена опция новые файлы называть WhatIsIt, минимально редактирую, сохраняю. При помощи Вашего скрипта, как я понимаю, можно существенно сократить количество операций. В связи с этим вопрос: что нужно подредактировать в скрипте, чтобы: 1. текст из буфера открывался именно в Texter'e (если там уже по умолчанию задано имя WhatIsIt.txt, то нужно, чтобы сохранялся (или, вернее, уже открывался с текстом из буфера) файл именно с этим названием 2. Чтобы он сохранялся не в активной панели, а там, куда я ему укажу
Дата: Суббота, 25.02.2012, 05:37 | Сообщение # 199
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 431
Понравилась идея JKT про поиск, хотя такой функционал есть в AkelPad Image, хотелось напрямую из тотала тоже самое делать и глядя на творение Flasher'a навоял под себя
Открыть в указанном браузере указанную web-страницу с поиском фразы из буфера
Code
' OpenInBrowserPageForSearch.vbs '======================== Описание ===================================== ' Открыть в указанном браузере указанную web-страницу с поиском фразы из буфера '======================= Параметры ===================================== ' 1-й параметр: Путь к браузеру ' 2-й параметр: web-страница '======================== Примеры ===================================== ' "%%COMMANDER_PATH%%\Programs\Internet\Opera_AC\OperaLauncher.exe" "http://www.yandex.ru/yandsearch?text=#" ' "%%COMMANDER_PATH%%\Programs\Internet\Opera_AC\OperaLauncher.exe" "http://ru.wikipedia.org/w/index.php?Search&search=#" ' "%%COMMANDER_PATH%%\Programs\Internet\GreenBrowser\GreenBrowser.exe" "http://www.google.com/search?q=#" ' "" http://rutracker.org/forum/tracker.php?max=1&nm=# - в браузере по умолчанию ' основан на коде Flasher'a ' Автор: Аверин Андрей ' Версия: 1.0 (25.02.2012) ' Mail: Averin-And@yandex.ru ' Site: http://tc-image.3dn.ru '==================================================================== File = WScript.Arguments(0) Clip = Trim(CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")) If Len(Clip) = 0 Then WScript.Quit arrS = Array(vbNewLine, vbCr, VbCrLf, vbFormFeed, vbLf, vbTab, vbVerticalTab) For i = 0 To Ubound(arrS) n = InStr(Clip, arrS(i)) : If n > 0 Then Clip = Left(Clip, n - 1) Next Clip = Replace(Clip, Chr(32), "+") S = LCase(Trim(WScript.Arguments(1))) If InStr(S, "http") Or InStr(S, "ftp") Then If InStrRev(S, "#") = 0 Then S = S & Clip Else S = Replace(S, "#", Clip) If Len(File) = 0 Or InStr(LCase(File), "explorer.exe")Then CreateObject("Shell.Application").Open S Else CreateObject("WScript.Shell").Exec File & Chr(32) & S End If End If
Дата: Суббота, 25.02.2012, 06:08 | Сообщение # 200
Сборщик TC Image
Зареген: 04.08.2011
Всего сообщений: 431
Quote (yaroslavi)
При помощи Вашего скрипта, как я понимаю, можно существенно сократить количество операций. В связи с этим вопрос: что нужно подредактировать в скрипте
Уже подкорректировал Buffer_N.vbs - Создание текстового файла с содержимым буфера обмена или именем из буфера обмена добавил 4-й параметр Задача решается добавлением в параметры строки "%p\WhatIsIt.txt" "1" "" "%%COMMANDER_PATH%%\Programs\Text\Texter2\Texter2.exe" если не хочешь в активной панели, то замени "%p\WhatIsIt.txt" на "путь\к\WhatIsIt.txt"
Quote (yaroslavi)
у меня есть файл с описанием: WhatIsIt.txt. Как сделать файл descript.ion для каждой папки