在我的桌面上有一个名为“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"
似乎在
ECHO !test!
行中会展开 !test!
,但在 FOR /R !test!
行中不会展开,变成了 !test!
。因为这当然不是一个有效的路径,所以 FOR /R 循环永远不会遍历。这是为什么?我漏掉了什么吗?