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

1

Eu tenho um arquivo de lote do Windows que processa um monte de 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 deles 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 só vez para o script Python, de modo que o comando que deve ser executado se pareça com:

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

Eu 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 "

No entanto, quando executar isso e deixar o ECHO, vejo:

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

Qual é incorreto? E quando eu "ecoa% PARAMS%", não obtenho resultado.

Existe uma maneira de conseguir isso?

Muitos agradecem

    
por Swinster 25.09.2015 / 20:24

1 resposta

1

A alteração de variáveis de ambiente em filho cmd instance (é o que o cmd /c invoca) não afeta o ambiente no processo pai cmd . O próximo snippet 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 o logreader.py obrigatório é meramente echo ed para fins de depuração.

No entanto, eu não apreendo o alvo do redirecionamento > , desculpe ...

Recursos (leitura obrigatória):

Editar :

por 26.09.2015 / 14:29