Запуск из батника опции поиска файлов по файл-списку
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2  Next  :| |:
Total Commander -> Автоматизация Total Commander

#1: Запуск из батника опции поиска файлов по файл-списку Author: BeardFury78 PostPosted: Sun Jul 22, 2018 23:27
    —
Есть некий батник. В конце результата создается файл со списком путей файлов (а именно g:\result.txt). Нужно добавить в конце батника команду чтобы открывался Total Commander и запустил поиск по файлу чтобы в результате вывелись файлы по списку путей. Возможно ли и как?

#2:  Author: FlasherLocation: Москва PostPosted: Sun Jul 22, 2018 23:55
    —
BeardFury78
А зачем? Что в батнике? У нас есть топики по теме (1, 2, 3 и т. д.).
Создаётся шаблон FileList c @<путь к списку> для поля "Место поиска:".
Строка запуска из батника: TOTALCMD.EXE /S=F:LFileList
Но лучше из vbs, чтобы запустить поиск с выводом на панель, предварительно сделав это:
Code:
With CreateObject("WScript.Shell")
  PID = .Exec("%COMMANDER_EXE% /S=F:LFileList").ProcessID
  Do: A = .AppActivate(PID) :Loop Until A : .SendKeys "~%-"
End With

#3:  Author: BeardFury78 PostPosted: Mon Jul 23, 2018 07:36
    —
Flasher
В батнике такой скрипт
Code:
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????

Просто нужно время от времени запускать поиск по определенному файлу, а он слишком большой, нужно разбивать на части. И вот захотелось потом запускать автоматически Total Commander с поиском по файлу-результату. Вашу команду попробовал, запустился Total Commander со строкой в поле поиска, приходится вручную запускать, но ничего. Спасибо большое за подсказку![/quote]

#4:  Author: FlasherLocation: Москва PostPosted: Mon Jul 23, 2018 14:06
    —
BeardFury78
Так зачем вручную, если я vbs дал?
И зачем в батнике вообще перебор в цикле? Сам grep не справляется с поисками?
Можно второй строкой прописать команду, если лень с самим vbs заморачиваться:
Code:
  .Run "%COMMANDER_PATH%\Utils\busybox.exe grep -f g:\patterns.txt -hriw g:\paths.txt>g:\result.txt", 0, 1
busybox — утилита-комбаин вместо Cygwin-ов, MinGW, Gow, UnxUtils и т. п. сборников. Функционал несколько урезан, но как правило в повседневке хватает.

#5:  Author: BeardFury78 PostPosted: Mon Jul 23, 2018 15:27
    —
Flasher
В том и дело. что файлы (паттерн и список) слишком большие, памяти не хватает, приходится разбивать файл паттерна на куски.

#6:  Author: FlasherLocation: Москва PostPosted: Mon Jul 23, 2018 15:33
    —
BeardFury78
Ну, сколько весят файлы и сколько свободной памяти?
Там ниже busybox64.exe предлагается. С ней как?

На первый вопрос ответа не вижу.

#7:  Author: BeardFury78 PostPosted: Mon Jul 23, 2018 16:52
    —
Flasher
Файл паттерн - 50 мб, файл-список - 100 мб. Поиск сразу занимает больше 5 гб и Windows зависает. Был бы рад перескочить на vbs, если бы там был скрипт аналогичный батнику, а самостоятельно ваять не умею. У меня Cygwin установленный, busybox имхо мне не нужен, аналогичные же утилиты, смысл плодить утилиты не вижу...

#8:  Author: FlasherLocation: Москва PostPosted: Mon Jul 23, 2018 17:35
    —
BeardFury78
Поиск предложенной мной строкой?
В батнике if, а у меня ключ -f. Советую сверить показания.

Как можно писать ерунду про аналогичные утилиты? busybox - это одна независимая портабельная программа с жалкими 475 либо 541 килобайтами, а Cygwin - это целый установочный пакет программ и библиотек с кучей всякого другого ненужного барахла (в т. ч. в реестре) с весом под 110 и более мегабайт. Confused

#9:  Author: BeardFury78 PostPosted: Mon Jul 23, 2018 18:01
    —
Flasher
И без ключа i тоже зависает, да и нужен мне этот ключ чтобы находило вне зависимости от регистра...

#10:  Author: FlasherLocation: Москва PostPosted: Mon Jul 23, 2018 18:19
    —
BeardFury78
Не знал, что перед f может учитываться ещё что-то. Вообще ключи r и w (у меня есть) тоже нужны.
Позже посмотрю, что лучше: sqlite3, LogParser или OLEDB.4.0.
А пока можно путь к своему батнику прописать вместо первого параметра приведённой строки.

Какая кодировка у файлов, кстати?

#11:  Author: BeardFury78 PostPosted: Mon Jul 23, 2018 18:50
    —
Flasher
Сделал так
Code:
  .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

Наверное не правильно сделала, ибо выдает ошибку:
Quote:
Строка: 1
Символ: 3
Ошибка: Неверная или неквалифицированная ссылка

#12:  Author: FlasherLocation: Москва PostPosted: Mon Jul 23, 2018 18:51
    —
Flasher wrote:
Можно второй строкой прописать команду ...
А не первой. Нужна вставка между первой и второй.
Также см. вопрос выше.

BeardFury78 wrote:
Наверное не правильно сделала
Surprised Это не опечатка? Жена под ником мужа орудует? Smile

#13:  Author: BeardFury78 PostPosted: Mon Jul 23, 2018 19:32
    —
Flasher
Виноват, опечатался Embarassed Embarassed
Скрипт заработал.
Кодировка у файлов UTF-8 with BOM.

#14:  Author: FlasherLocation: Москва PostPosted: Mon Jul 23, 2018 19:35
    —
BeardFury78
А пункт с TCKB выполнен? Файлы на панель вываливаются?

С кодировкой ясно. Значит, OLEDB отпадает..

#15:  Author: BeardFury78 PostPosted: Mon Jul 23, 2018 20:07
    —
Эх, форум во время отправки сообщения засбоил и долго не пускал, пришлось по новой набирать...
Как оказалось, строки 5664 в WCMD_RUS.INC имела вид
Quote:
5664="Ф&айлы на панель"

Решил просто сделать
Quote:
5664="Ф&айлы &- на панель"

После этого закрыл Тотал, запустил скрипт и после этого Тотал запустился, но в фоне, пришлось кликать на иконку, там оказалось окно поиска, но не в стадии процесса поиска, все еще нужно кликать на кнопку поиска.
Потом еще раз запустил скрипт, но внутри Тотала и я уже не закрывал программу и стал ждать. После завершения скрипта открылось окно поиска, но опять ничего не нажалось. Но после того как я закрыл это окно, то создалось еще одно новое окно поиска, но с пустым полем "Место поиска" и кнопка нажалась, но поиск велся по всем дискам компьютера. Такая вот история.

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

Как оказалось, был конфликт, в батнике на последней строке было
Code:
"e:\Programs Files\Total Commander\TOTALCMD64.EXE" /S=F:Lsearchpaths

в vbs
Code:
  PID = .Exec("%COMMANDER_EXE% /S=F:LFileList").ProcessID

убрал в батнике последнюю строку и на этот раз создалось только окно поиска с пустым полем и с поиском по всему компьютеру. Что не так сделано?
Батник полностью:
Code:
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????

Скрипт полностью
Code:
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]


Блин, торможу... сейчас еще проверю.



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2  Next  :| |:
Page 1 of 2

Powered by phpBB © 2001, 2005 phpBB Group