숫자를 파일 경로에 삽입하는 스크립트가 필요합니다 (예 : , C : \ WINDOWS \ system32 \ ansi). sys to C : \ WINDOWS \ system32 \ 5.ansi.sysWindows 루프 스크립트의 함수에서 반환 된 값이 FOR 루프에서 무시됩니다.
레이블을 사용하여 함수를 만들었으며 FOR 루프 내에서 호출 할 때까지 제대로 작동하는 것 같습니다.
이 내가 쓴 코드입니다 :
@ECHO OFF
SET PATHTOPROCESS="C:\WINDOWS\system32\ansi.sys"
call :GetNewFilePath NEWPATH %PATHTOPROCESS% 7
echo New file name: %NEWPATH%
call :GetNewFilePath NEWPATH %PATHTOPROCESS% 5
echo New file name: %NEWPATH%
FOR /L %%i in (1,1,2) DO (
call :GetNewFilePath NEWPATH %PATHTOPROCESS% %%i
echo New file name in FOR loop: %NEWPATH%
)
goto :eof
:GetNewFilePath
SETLOCAL
SET PINDEX=%~3
SET PDIRECTORY=%~dp2
SET PFILE=%~nx2
SET LocalVar1=%PDIRECTORY%%PINDEX%.%PFILE%
ENDLOCAL & IF "%~1" NEQ "" SET %~1=%LocalVar1%
goto :eof
는이 내가 얻을 출력 :
New file name: C:\WINDOWS\system32\7.ansi.sys
New file name: C:\WINDOWS\system32\5.ansi.sys
New file name in FOR loop: C:\WINDOWS\system32\5.ansi.sys
New file name in FOR loop: C:\WINDOWS\system32\5.ansi.sys
이 내가 기대하는 것입니다 :
New file name: C:\WINDOWS\system32\7.ansi.sys
New file name: C:\WINDOWS\system32\5.ansi.sys
New file name in FOR loop: C:\WINDOWS\system32\1.ansi.sys
New file name in FOR loop: C:\WINDOWS\system32\2.ansi.sys
그것은 것 같다 FOR 루프에서 변수는 함수를 호출하기 전의 값으로 되돌려집니다. FOR를 사용할 때 특별한 트릭이 필요합니까?
감사합니다.
그래, 그럴 것 같습니다. :) 고마워, 요하네스. – Paul