2
작성한 일괄 처리 스크립트에서 변수 할당에 이상한 동작이 나타납니다. 문제를 재현 할 수있는 가장 간단한 예가 다음과 같습니다.CMD.exe에 변수 값에 대한 예언이 있습니다.
F:\pos>pos.bat
F:\pos>FOR /R ".\" %F IN (*.txt) DO (
echo Look: %F
set file=%~dpF%~nF
echo F:\pos\dir\file2
)
F:\pos>(
echo Look: F:\pos\file1.txt
set file=F:\pos\file1
echo F:\pos\dir\file2
)
Look: F:\pos\file1.txt
F:\pos\dir\file2
F:\pos>(
echo Look: F:\pos\dir\file2.txt
set file=F:\pos\dir\file2
echo F:\pos\dir\file2
)
Look: F:\pos\dir\file2.txt
F:\pos\dir\file2
Shouldn :
pos/
|-pos.bat
|-file1.txt
|dir/
|-file2.txt
나는 다음과 같은 출력을 얻을 : 서브 디렉토리에 하나,
@echo on
FOR /R ".\" %%F IN (*.txt) DO (
echo Look: %%F
set file=%%~dpF%%~nF
echo %file%
)
이 개 * .txt 인 파일이 들어있는 디렉토리에서 : 나는 파일 type pos.bat
을 만들어 루프의 첫 번째 반복에서 %file%
의 값이 F:\pos\file1.txt
으로 다시 바뀝니 까? 또한, 나는`% file %의 값이 스크립트를 호출하는 사이에 전혀 유지되어야한다는 것에 놀랐다. I로 행동 스크립트에 첫 번째 호출 의도 :
F:\pos>FOR /R ".\" %F IN (*.txt) DO (
echo Look: %F
set file=%~dpF%~nF
echo
)
F:\pos>(
echo Look: F:\pos\file1.txt
set file=F:\pos\file1
echo
)
Look: F:\pos\file1.txt
ECHO is on.
F:\pos>(
echo Look: F:\pos\dir\file2.txt
set file=F:\pos\dir\file2
echo
)
Look: F:\pos\dir\file2.txt
ECHO is on.
그러나 모든 후속 호출은 나에게 쓰레기 결과를 제공합니다. 어떤 도움이라도 대단히 감사합니다.
! 그 트릭을 했어! 감사. –