【问题标题】:single line for statement: %%i 'unexpected at this time'单行语句:%%i '此时出乎意料'
【发布时间】:2012-01-17 16:23:19
【问题描述】:
for /r %%i in (*) do (echo %%i)

结果

%%i 这个时候出乎意料

为什么?

【问题讨论】:

  • 不是%i在实际的for里面吗?就像echo 的参数一样。
  • 在一个适合我的批处理中,文件中是否还有其他代码?
  • % 用于命令行,%% 用于批处理文件。

标签: for-loop cmd


【解决方案1】:

您必须尝试从命令行而不是从批处理文件中运行命令。从命令行运行时使用单个 % 而不是两个。

for /r %i in (*) do (echo %i)

在命令行中输入 HELP FOR 并阅读第 3 段。

【讨论】:

【解决方案2】:

语法:

FOR /R [[drive:]path] %%parameter IN (set) DO command

需要 %%i 之前的路径...这就是为什么它是 Unexpected

如果您想对当前目录执行*,只需使用“.\”作为路径

for /r ".\" %%i in (*) do (echo %%i)

【讨论】:

  • 路径在 /r 选项之后NOT是必需的。默认为当前目录。
  • meh... 用户指定的批处理文件,这是我看到的唯一丢失的东西。所以这是一个 PEBKAC 问题 =/
【解决方案3】:

如果有人想知道如何将数据提取到文件中

使用 CMD

所有文件

for /r %i  in (*) do @echo %~ni >> AllFiles.txt

对于特定的扩展

for /r %i  in (*.mp3) do @echo %~ni >> songs.txt

带扩展名的文件名

for /r %a in (*) do @echo %~nxa >> FileNameWithExtension.txt

注意: 如果您正在制作批处理脚本,请使用“%%”而不是上面提到的每个“%”

【讨论】:

    猜你喜欢
    • 2014-09-11
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多