Запуск из батника опции поиска файлов по файл-списку
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
-
BeardFury78
- Сообщения: 213
- Зарегистрирован: Чт авг 25, 2016 05:24
Запуск из батника опции поиска файлов по файл-списку
Есть некий батник. В конце результата создается файл со списком путей файлов (а именно g:\result.txt). Нужно добавить в конце батника команду чтобы открывался Total Commander и запустил поиск по файлу чтобы в результате вывелись файлы по списку путей. Возможно ли и как?
BeardFury78
А зачем? Что в батнике? У нас есть топики по теме (1, 2, 3 и т. д.).
Создаётся шаблон FileList c @<путь к списку> для поля "Место поиска:".
Строка запуска из батника: TOTALCMD.EXE /S=F:LFileList
Но лучше из vbs, чтобы запустить поиск с выводом на панель, предварительно сделав это:
А зачем? Что в батнике? У нас есть топики по теме (1, 2, 3 и т. д.).
Создаётся шаблон FileList c @<путь к списку> для поля "Место поиска:".
Строка запуска из батника: TOTALCMD.EXE /S=F:LFileList
Но лучше из vbs, чтобы запустить поиск с выводом на панель, предварительно сделав это:
Код: Выделить всё
With CreateObject("WScript.Shell")
PID = .Exec("%COMMANDER_EXE% /S=F:LFileList").ProcessID
Do: A = .AppActivate(PID) :Loop Until A : .SendKeys "~%-"
End WithАвтору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
-
BeardFury78
- Сообщения: 213
- Зарегистрирован: Чт авг 25, 2016 05:24
Flasher
В батнике такой скрипт
Просто нужно время от времени запускать поиск по определенному файлу, а он слишком большой, нужно разбивать на части. И вот захотелось потом запускать автоматически Total Commander с поиском по файлу-результату. Вашу команду попробовал, запустился Total Commander со строкой в поле поиска, приходится вручную запускать, но ничего. Спасибо большое за подсказку![/quote]
В батнике такой скрипт
Код: Выделить всё
del /s g:\result.txt
split -l 8500 -a 4 g:\patterns.txt
for %%f in (g:\x????) do (
grep -if %%f g:\paths.txt >> g:\result.txt
)
del /s g:\x????BeardFury78
Так зачем вручную, если я vbs дал?
И зачем в батнике вообще перебор в цикле? Сам grep не справляется с поисками?
Можно второй строкой прописать команду, если лень с самим vbs заморачиваться:busybox — утилита-комбаин вместо Cygwin-ов, MinGW, Gow, UnxUtils и т. п. сборников. Функционал несколько урезан, но как правило в повседневке хватает.
Так зачем вручную, если я vbs дал?
И зачем в батнике вообще перебор в цикле? Сам grep не справляется с поисками?
Можно второй строкой прописать команду, если лень с самим vbs заморачиваться:
Код: Выделить всё
.Run "%COMMANDER_PATH%\Utils\busybox.exe grep -f g:\patterns.txt -hriw g:\paths.txt>g:\result.txt", 0, 1Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
-
BeardFury78
- Сообщения: 213
- Зарегистрирован: Чт авг 25, 2016 05:24
BeardFury78
Ну, сколько весят файлы и сколько свободной памяти?
Там ниже busybox64.exe предлагается. С ней как?
На первый вопрос ответа не вижу.
Ну, сколько весят файлы и сколько свободной памяти?
Там ниже busybox64.exe предлагается. С ней как?
На первый вопрос ответа не вижу.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
-
BeardFury78
- Сообщения: 213
- Зарегистрирован: Чт авг 25, 2016 05:24
Flasher
Файл паттерн - 50 мб, файл-список - 100 мб. Поиск сразу занимает больше 5 гб и Windows зависает. Был бы рад перескочить на vbs, если бы там был скрипт аналогичный батнику, а самостоятельно ваять не умею. У меня Cygwin установленный, busybox имхо мне не нужен, аналогичные же утилиты, смысл плодить утилиты не вижу...
Файл паттерн - 50 мб, файл-список - 100 мб. Поиск сразу занимает больше 5 гб и Windows зависает. Был бы рад перескочить на vbs, если бы там был скрипт аналогичный батнику, а самостоятельно ваять не умею. У меня Cygwin установленный, busybox имхо мне не нужен, аналогичные же утилиты, смысл плодить утилиты не вижу...
BeardFury78
Поиск предложенной мной строкой?
В батнике if, а у меня ключ -f. Советую сверить показания.
Как можно писать ерунду про аналогичные утилиты? busybox - это одна независимая портабельная программа с жалкими 475 либо 541 килобайтами, а Cygwin - это целый установочный пакет программ и библиотек с кучей всякого другого ненужного барахла (в т. ч. в реестре) с весом под 110 и более мегабайт.
Поиск предложенной мной строкой?
В батнике if, а у меня ключ -f. Советую сверить показания.
Как можно писать ерунду про аналогичные утилиты? busybox - это одна независимая портабельная программа с жалкими 475 либо 541 килобайтами, а Cygwin - это целый установочный пакет программ и библиотек с кучей всякого другого ненужного барахла (в т. ч. в реестре) с весом под 110 и более мегабайт.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
-
BeardFury78
- Сообщения: 213
- Зарегистрирован: Чт авг 25, 2016 05:24
BeardFury78
Не знал, что перед f может учитываться ещё что-то. Вообще ключи r и w (у меня есть) тоже нужны.
Позже посмотрю, что лучше: sqlite3, LogParser или OLEDB.4.0.
А пока можно путь к своему батнику прописать вместо первого параметра приведённой строки.
Какая кодировка у файлов, кстати?
Не знал, что перед f может учитываться ещё что-то. Вообще ключи r и w (у меня есть) тоже нужны.
Позже посмотрю, что лучше: sqlite3, LogParser или OLEDB.4.0.
А пока можно путь к своему батнику прописать вместо первого параметра приведённой строки.
Какая кодировка у файлов, кстати?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
-
BeardFury78
- Сообщения: 213
- Зарегистрирован: Чт авг 25, 2016 05:24
Flasher
Сделал так
Наверное не правильно сделала, ибо выдает ошибку:
Сделал так
Код: Выделить всё
.Run "g:\pathssearch.bat", 0, 1
With CreateObject("WScript.Shell")
PID = .Exec("%COMMANDER_EXE% /S=F:LFileList").ProcessID
Do: A = .AppActivate(PID) :Loop Until A : .SendKeys "~%-"
End WithСтрока: 1
Символ: 3
Ошибка: Неверная или неквалифицированная ссылка
А не первой. Нужна вставка между первой и второй.Flasher писал(а):Можно второй строкой прописать команду ...
Также см. вопрос выше.
BeardFury78 писал(а):Наверное не правильно сделала
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
-
BeardFury78
- Сообщения: 213
- Зарегистрирован: Чт авг 25, 2016 05:24
BeardFury78
А пункт с TCKB выполнен? Файлы на панель вываливаются?
С кодировкой ясно. Значит, OLEDB отпадает..
А пункт с TCKB выполнен? Файлы на панель вываливаются?
С кодировкой ясно. Значит, OLEDB отпадает..
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
-
BeardFury78
- Сообщения: 213
- Зарегистрирован: Чт авг 25, 2016 05:24
Эх, форум во время отправки сообщения засбоил и долго не пускал, пришлось по новой набирать...
Как оказалось, строки 5664 в WCMD_RUS.INC имела вид
Потом еще раз запустил скрипт, но внутри Тотала и я уже не закрывал программу и стал ждать. После завершения скрипта открылось окно поиска, но опять ничего не нажалось. Но после того как я закрыл это окно, то создалось еще одно новое окно поиска, но с пустым полем "Место поиска" и кнопка нажалась, но поиск велся по всем дискам компьютера. Такая вот история.
Убрал первый амперсанд у строки (который после Ф идет), не помогло, симптомы те же. Еще раз запустил скрипт, специально дождался окна поиска и после этого еще 5 минут прождал, кнопка не нажалась, но после закрытия еще раз создалось окно и немедленно начало поиск по компьютеру.
Как оказалось, был конфликт, в батнике на последней строке было
в vbs
убрал в батнике последнюю строку и на этот раз создалось только окно поиска с пустым полем и с поиском по всему компьютеру. Что не так сделано?
Батник полностью:
Скрипт полностью
Блин, торможу... сейчас еще проверю.
Как оказалось, строки 5664 в WCMD_RUS.INC имела вид
Решил просто сделать5664="Ф&айлы на панель"
После этого закрыл Тотал, запустил скрипт и после этого Тотал запустился, но в фоне, пришлось кликать на иконку, там оказалось окно поиска, но не в стадии процесса поиска, все еще нужно кликать на кнопку поиска.5664="Ф&айлы &- на панель"
Потом еще раз запустил скрипт, но внутри Тотала и я уже не закрывал программу и стал ждать. После завершения скрипта открылось окно поиска, но опять ничего не нажалось. Но после того как я закрыл это окно, то создалось еще одно новое окно поиска, но с пустым полем "Место поиска" и кнопка нажалась, но поиск велся по всем дискам компьютера. Такая вот история.
Убрал первый амперсанд у строки (который после Ф идет), не помогло, симптомы те же. Еще раз запустил скрипт, специально дождался окна поиска и после этого еще 5 минут прождал, кнопка не нажалась, но после закрытия еще раз создалось окно и немедленно начало поиск по компьютеру.
Как оказалось, был конфликт, в батнике на последней строке было
Код: Выделить всё
"e:\Programs Files\Total Commander\TOTALCMD64.EXE" /S=F:LsearchpathsКод: Выделить всё
PID = .Exec("%COMMANDER_EXE% /S=F:LFileList").ProcessID
Батник полностью:
Код: Выделить всё
del /s g:\result.txt
split -l 8500 -a 4 g:\patterns.txt
for %%f in (g:\x????) do (
grep -if %%f g:\paths.txt >> g:\result.txt
)
del /s g:\x????Код: Выделить всё
With CreateObject("WScript.Shell")
.Run "g:\pathssearch.bat", 0, 1
PID = .Exec("%COMMANDER_EXE% /S=F:LFileList").ProcessID
Do: A = .AppActivate(PID) :Loop Until A : .SendKeys "~%-"
End With[quote][/quote]