【发布时间】:2015-05-19 20:06:26
【问题描述】:
在我的桌面上,有一个名为 "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 循环永远不会迭代。
这是为什么?我错过了什么?
【问题讨论】:
标签: batch-file for-loop command-line cmd variable-expansion