首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Forfiles批处理脚本(转义@字符)

Forfiles批处理脚本(转义@字符)
EN

Stack Overflow用户
提问于 2009-06-24 23:48:33
回答 8查看 67.6K关注 0票数 21

我正在编写一个批处理脚本,它可以让我使用forfiles删除超过一段时间的文件。现在,我的目标是打印要删除的文件。

我正在使用的forfiles调用在cmd.exe外壳中运行得非常完美,但是一旦我将它嵌入到一个批处理脚本中,它就会变得异常。我怀疑这是因为@字符没有正确转义,但我不确定。

我正在运行的命令是:

代码语言:javascript
复制
forfiles /S /P "r:\" /m *.bak /d -10 /c "cmd /c echo @PATH"

并导致以下错误:

代码语言:javascript
复制
ERROR: Invalid argument/option - '@PATH'
Type "FORFILES /?" for usage.

我用谷歌搜索了所有地方,并尝试了几种不同的方案来转义@PATH组件。从@@PATH\"@PATH\"都没有结果。

任何帮助都将不胜感激!

我还应该注意到,我从here.获得了很多关于forfiles的知识

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-06-24 15:59:00

我也遇到过同样的问题,直到我删除了目录路径两边的引号,如下所示:

代码语言:javascript
复制
forfiles /S /P r:\ /m *.bak /d -10 /c "cmd /c echo @PATH"

希望这能有所帮助。

票数 47
EN

Stack Overflow用户

发布于 2011-12-06 21:10:34

尝试修剪/P路径中的尾随\。然后,您应该能够使用引号来封装包含空格的路径。

票数 26
EN

Stack Overflow用户

发布于 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"

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1039221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档