在我的桌面上,有一个名为"test"的文件夹。这个文件夹里面有两个文件,“file1.txt”和“file2.txt”。
看看这个简单的批处理脚本:
@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 循环永远不会迭代。
为什么是这样?我错过了什么?