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

forfile 명령 내에서 SET 명령을 다음과 같이 사용하려고 했습니다.

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

그러나 이것을 실행하고 ECHO를 ON으로 두면 다음이 표시됩니다.

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

하지만 리디렉션 대상이 파악되지 않습니다 >. 죄송합니다.

자원(필수 읽기):

편집하다:

관련 정보