我正在编写一个批处理脚本,它可以让我使用forfiles删除超过一段时间的文件。现在,我的目标是打印要删除的文件。
我正在使用的forfiles调用在cmd.exe外壳中运行得非常完美,但是一旦我将它嵌入到一个批处理脚本中,它就会变得异常。我怀疑这是因为@字符没有正确转义,但我不确定。
我正在运行的命令是:
forfiles /S /P "r:\" /m *.bak /d -10 /c "cmd /c echo @PATH"并导致以下错误:
ERROR: Invalid argument/option - '@PATH'
Type "FORFILES /?" for usage.我用谷歌搜索了所有地方,并尝试了几种不同的方案来转义@PATH组件。从@@PATH到\"@PATH\"都没有结果。
任何帮助都将不胜感激!
我还应该注意到,我从here.获得了很多关于forfiles的知识
发布于 2009-06-24 15:59:00
我也遇到过同样的问题,直到我删除了目录路径两边的引号,如下所示:
forfiles /S /P r:\ /m *.bak /d -10 /c "cmd /c echo @PATH"希望这能有所帮助。
发布于 2011-12-06 21:10:34
尝试修剪/P路径中的尾随\。然后,您应该能够使用引号来封装包含空格的路径。
发布于 2012-11-30 18:06:17
这是一个老问题,但我有一个不同的答案。以防有人需要它。
当使用'forfiles‘时,路径(写在/p之后)可以在引号之间。但是,它不能以斜杠结束。
如果要对驱动器的根目录运行'forfiles‘:
forfiles /p "C:" /c "cmd /c echo @file"
如果你想在不同的目录中处理文件...
forfiles /p "C:\Program Files" /c "cmd /c echo @file"
换句话说,最安全的方法是:
forfiles /p "C:\Path\Without\Trailing\Slash"
https://stackoverflow.com/questions/1039221
复制相似问题