4
在我的桌面上,有一個名爲「test」的文件夾。此文件夾內有兩個文件,「file1.txt」和「file2.txt」。Windows CMD批處理:FOR/R with DelayedExpansion
看看這個簡單的批處理腳本:
@ECHO OFF
SET test="C:\Users\Tyler\Desktop\test"
ECHO %test%
FOR /R %test% %%F IN (*) DO (
ECHO %%F
)
正如你所期望的,它輸出以下:
"C:\Users\Tyler\Desktop\test"
C:\Users\Tyler\Desktop\test\file1.txt
C:\Users\Tyler\Desktop\test\file2.txt
現在來看看這種變化:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET test="C:\Users\Tyler\Desktop\test"
ECHO !test!
FOR /R !test! %%F IN (*) DO (
ECHO %%F
)
ENDLOCAL
我希望它的輸出沒有什麼不同。然而,在這裏,它是:
"C:\Users\Tyler\Desktop\test"
看來,!test!
在ECHO !test!
線得到擴充,但不是在FOR /R !test!
線,成爲剛剛!test!
。因爲那當然不是有效的路徑,所以FOR/R循環不會迭代。
這是爲什麼?我錯過了什麼?
這很有趣(和不幸)。謝謝! – TSmith