【问题标题】:Why does execution in shell give different result that execution in batch script?为什么在 shell 中执行与批处理脚本中的执行结果不同?
【发布时间】:2017-02-06 11:34:15
【问题描述】:

我想列出一个目录及其子目录中的所有 .csv 文件。当我在 cmd 终端中运行它时效果很好:

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

当我将同一行代码放入(否则为空)文本文件 (.cmd) 并运行该 .cmd 文件时,它会输出一个空行,但不会列出任何文件。

为什么将命令放入脚本或直接(一次性)在终端中输入它们会有所不同?

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

有什么想法吗?

【问题讨论】:

    标签: windows loops batch-file cmd echo


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢!就是这样!
    • for 循环变量名在从文件中运行时会被双重评估,因此%%->%for /? | findstr "%%"To use the FOR command in a batch program, specify %%variable instead
    猜你喜欢
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 2015-04-12
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    相关资源
    最近更新 更多