为什么在shell中的执行会给出批处理脚本执行的不同结果?

问题描述:

我想列出一个目录及其子目录中的所有.csv文件。它的工作原理很好,当我在cmd终端运行这个命令:为什么在shell中的执行会给出批处理脚本执行的不同结果?

for /f %a in ('dir /b /s *.csv') do (echo %a) 

当我把相同的代码行到(否则为空)文本文件(.CMD)和运行.cmd文件,它输出一个空白行,但不列出任何文件。

为什么将命令放入脚本中或直接在终端中输入(一次性输入)会有什么区别?

认为这可能是一个延迟扩展问题,我也试过for /f %a in ('dir /b /s *.csv') do (echo !a!),但是这并没有列出文件。

任何想法?

加倍批处理文件中的百分比符号!

for /f %%a in ('dir /b /s *.csv') do (echo %%a) 
+0

非常感谢!就是这样! – Joan

+0

for循环变量名从文件运行时得到双重评估,因此'%%' - >'%'。 '为/? | findstr“%%”'给出'要在批处理程序中使用FOR命令,请指定%%变量 – LinuxDisciple