为什么在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)
非常感谢!就是这样! – Joan
for循环变量名从文件运行时得到双重评估,因此'%%' - >'%'。 '为/? | findstr“%%”'给出'要在批处理程序中使用FOR命令,请指定%%变量 – LinuxDisciple