Пакетный файл Windows, цикл по файлам в папке для создания списка параметров для передачи в другой скрипт

Пакетный файл Windows, цикл по файлам в папке для создания списка параметров для передачи в другой скрипт

У меня есть пакетный файл Windows, который обрабатывает кучу файлов. В качестве части этого я использую следующую строку:

forfiles /p "%~dpn1%LogDir%" /m "%SupportLog%*" /c "cmd /c logreader.py @file > \"%~dpn1%ParsedLogDir%\@file_Logreader.txt\"

Это работает нормально, но по сути перебирает все мои файлы (%SupportLog%*) и передает каждый из них по одному в скрипт «logreader.py».

На самом деле я хочу создать список или параметр всех этих файлов и передать их все сразу в скрипт Python, чтобы команда, которая должна быть запущена, выглядела примерно так:

logreader.py "logfile.log" "logfile.log.1" "logfile.log.3" .....

Я попытался использовать команду SET внутри команды forfile следующим образом:

forfiles /p "%~dpn1%LogDir%" /m "%SupportLog%*" /c "cmd /c set PARAMS=%PARAMS%@file "

Однако, если запустить это и оставить ECHO включенным, я увижу:

forfiles /p "C:\Path\log" /m "logfile.log*" /c "cmd /c set PARAMS=@file "

Что неверно. И когда я "echo %PARAMS%", я не получаю никакого результата.

Есть ли способ этого добиться?

Большое спасибо

решение1

Изменение переменных среды вребенок cmdэкземпляр (это то, что cmd /cвызывает) не влияет на среду в родительском cmdпроцессе. Следующий фрагмент кода может помочь:

SETLOCAL EnableExtensions EnableDelayedExpansion
set "LogDir=%~dpn1log"         my guess only
set "SupportLog=logfile.log"   my guess only
set "PARAMS="                  initial value
rem 1st try for /R "%LogDir%" %%a in ("%SupportLog%*") do set PARAMS=!PARAMS! "%%~a"
rem 2nd try for %%a in ("%LogDir%\%SupportLog%*") do set "PARAMS=!PARAMS! "%%~a""
rem 3rd try
for %%a in ("%LogDir%\%SupportLog%*") do set "PARAMS=!PARAMS! "%%~nxa""
echo logreader.py %PARAMS%

Обратите внимание, что императив используется logreader.pyтолько echoв целях отладки.

Однако, извините, я не понимаю, на кого направлено >это сообщение...

Ресурсы(обязательно к прочтению):

Редактировать:

Связанный контент