我正在尝试将文件名作为 FOR 循环参数传递给单独的批处理文件。问题是,如果文件名包含特殊字符(尤其是 %),则参数不会转到被调用的脚本。EG -
具体FIRST_SCRIPT.bat
如下——
cd "C:\theFolder"
for /R %%a in (*.*) do call SECOND_SCRIPT "%%~a"
具体SECOND_SCRIPT.bat
如下——
ECHO %1
如果文件名包含 % 例如。“% of STATS.txt”,输出最终是
of STATS.txt
这是错误的。我试过使用Setlocal DisableDelayedExpansion
但收效甚微
Setlocal DisableDelayedExpansion
for /R %%a in (*.*) do (
SET "var=%%~a"
Setlocal EnableDelayedExpansion
call TEST_UPGRADE "%var%" "%%~a"
)
还有其他 stackoverflow 答案,但它们都需要事先知道 % 字符。由于文件名不在我们的控制范围内,因此这些解决方案对我们不起作用。有没有办法处理这个?
谢谢!
平台:Windows XP 的 cmd.exe