无论我怎么尝试,我的 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"