Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Запуск из батника опции поиска файлов по файл-списку
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Sun Jul 22, 2018 23:27    Post subject: Запуск из батника опции поиска файлов по файл-списку Reply with quote

Есть некий батник. В конце результата создается файл со списком путей файлов (а именно g:\result.txt). Нужно добавить в конце батника команду чтобы открывался Total Commander и запустил поиск по файлу чтобы в результате вывелись файлы по списку путей. Возможно ли и как?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun Jul 22, 2018 23:55    Post subject: Reply with quote

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

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Mon Jul 23, 2018 07:36    Post subject: Reply with quote

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]
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Jul 23, 2018 14:06    Post subject: Reply with quote

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 и т. п. сборников. Функционал несколько урезан, но как правило в повседневке хватает.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Mon Jul 23, 2018 15:27    Post subject: Reply with quote

Flasher
В том и дело. что файлы (паттерн и список) слишком большие, памяти не хватает, приходится разбивать файл паттерна на куски.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Jul 23, 2018 15:33    Post subject: Reply with quote

BeardFury78
Ну, сколько весят файлы и сколько свободной памяти?
Там ниже busybox64.exe предлагается. С ней как?

На первый вопрос ответа не вижу.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Mon Jul 23, 2018 16:52    Post subject: Reply with quote

Flasher
Файл паттерн - 50 мб, файл-список - 100 мб. Поиск сразу занимает больше 5 гб и Windows зависает. Был бы рад перескочить на vbs, если бы там был скрипт аналогичный батнику, а самостоятельно ваять не умею. У меня Cygwin установленный, busybox имхо мне не нужен, аналогичные же утилиты, смысл плодить утилиты не вижу...
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Jul 23, 2018 17:35    Post subject: Reply with quote

BeardFury78
Поиск предложенной мной строкой?
В батнике if, а у меня ключ -f. Советую сверить показания.

Как можно писать ерунду про аналогичные утилиты? busybox - это одна независимая портабельная программа с жалкими 475 либо 541 килобайтами, а Cygwin - это целый установочный пакет программ и библиотек с кучей всякого другого ненужного барахла (в т. ч. в реестре) с весом под 110 и более мегабайт. Confused
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Mon Jul 23, 2018 18:01    Post subject: Reply with quote

Flasher
И без ключа i тоже зависает, да и нужен мне этот ключ чтобы находило вне зависимости от регистра...
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Jul 23, 2018 18:19    Post subject: Reply with quote

BeardFury78
Не знал, что перед f может учитываться ещё что-то. Вообще ключи r и w (у меня есть) тоже нужны.
Позже посмотрю, что лучше: sqlite3, LogParser или OLEDB.4.0.
А пока можно путь к своему батнику прописать вместо первого параметра приведённой строки.

Какая кодировка у файлов, кстати?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Mon Jul 23, 2018 18:50    Post subject: Reply with quote

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
Ошибка: Неверная или неквалифицированная ссылка
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Jul 23, 2018 18:51    Post subject: Reply with quote

Flasher wrote:
Можно второй строкой прописать команду ...
А не первой. Нужна вставка между первой и второй.
Также см. вопрос выше.

BeardFury78 wrote:
Наверное не правильно сделала
Surprised Это не опечатка? Жена под ником мужа орудует? Smile
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Mon Jul 23, 2018 19:32    Post subject: Reply with quote

Flasher
Виноват, опечатался Embarassed Embarassed
Скрипт заработал.
Кодировка у файлов UTF-8 with BOM.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Jul 23, 2018 19:35    Post subject: Reply with quote

BeardFury78
А пункт с TCKB выполнен? Файлы на панель вываливаются?

С кодировкой ясно. Значит, OLEDB отпадает..
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
BeardFury78



Joined: 25 Aug 2016
Posts: 213

Post (Separately) Posted: Mon Jul 23, 2018 20:07    Post subject: Reply with quote

Эх, форум во время отправки сообщения засбоил и долго не пускал, пришлось по новой набирать...
Как оказалось, строки 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]


Блин, торможу... сейчас еще проверю.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
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