找不到此语法中的错误(forfiles 批处理中的 If 语句)

找不到此语法中的错误(forfiles 批处理中的 If 语句)

无论我怎么尝试,我的 win7 64 位机器上的批处理文件中的以下行都无法运行:

forfiles /P "I:\testroot" /C "CMD /C if /i @FILE==testung.txt del /s @FILE"

代码运行,没有显示错误,但文件 testung.txt 未被删除。

如果有人对 MS 的官方语法感兴趣:

http://technet.microsoft.com/de-de/library/cc753551%28v=ws.10%29.aspx

那么问题出在哪里?

答案1

您漏掉了几个双引号……

发生的情况是@FILE返回用双引号括起来的文件名,因此您需要在 IF 语句比较中引用它。

您可以通过执行 来见证这一点forfiles /P "I:\testroot" /C "CMD /C echo @FILE",并看到 被testung.txt回显为"testing.txt"

要在字符串中使用双引号(而不是作为字符串分隔符),您需要使用 . 对其进行转义\

所以一旦我们这样做了,它就会起作用:

forfiles /P "I:\testroot" /C "CMD /C if /i @FILE==\"testung.txt\" del /s @FILE"

相关内容