Arquivo em lote do Windows, percorrendo arquivos na pasta para criar uma lista de parâmetros para passar para outro script

Arquivo em lote do Windows, percorrendo arquivos na pasta para criar uma lista de parâmetros para passar para outro script

Eu tenho um arquivo em lote do Windows que processa vários arquivos. Como parte disso eu uso a seguinte linha:

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

Isso funciona bem, mas essencialmente percorre todos os meus arquivos (% SupportLog% *) e passa cada um por um para o script "logreader.py".

O que eu realmente quero fazer é criar uma lista ou parâmetro de todos esses arquivos e passar todos eles de uma vez para o script Python, de forma que o comando que deve ser executado seja semelhante a:

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

Tentei usar o comando SET dentro do comando forfile de forma que:

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

Porém, ao executar isso e deixar o ECHO ON, vejo:

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

O que está incorreto. E quando eu "eco %PARAMS%", não obtenho resultado.

Existe uma maneira de conseguir isso?

Muito obrigado

Responder1

Alterando variáveis ​​de ambiente em umcriança cmdinstância (é isso que cmd /cinvoca) não afeta o ambiente no cmdprocesso pai. O próximo trecho de código pode ajudar:

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%

Observe que imperativo logreader.pyé meramente echoeditado para fins de depuração.

Porém, não apreendo alvo de >redirecionamento, desculpe...

Recursos(leitura obrigatória):

Editar:

informação relacionada