我有一个场景:

FORFILES /P "C:\users\DominiqueGerry\Work Files\" /S /M *.doc /C "cmd /c echo @fsize"

给我一个错误:

错误:无效的参数/选项-'@fsize'。
输入“ FORFILES /?”使用。

但是当我删除斜杠时,它起作用了:
FORFILES /P "C:\users\DominiqueGerry\Work Files" /S /M *.doc /C "cmd /c echo @fsize"

我不明白为什么没有反斜杠这是行不通的,但是反斜杠却没有。我找不到解释此问题的任何官方文档。并且甚至在运行帮助forfiles /?时都看不到任何提及,对此我将不胜感激。
最好的部分是。该错误甚至与手头的问题无关。

最佳答案

老实说,我认为官方帮助中没有记录(至少没有我所看到的),但是实际发生的是,反斜杠实际上在转义了最后一个双引号。在我看来,这实际上是一个错误。

错误不相关的原因仅仅是因为forfiles命令检测到格式错误,原因是缺少双引号,反斜杠转义了。

您将看到没有双引号时不会发生这种情况,因此让我们假设您的路径中没有空格:

FORFILES /P C:\users\DominiqueGerry\WorkFiles\ /S /M *.doc /C "cmd /c echo @fsize"


不会给您一个错误,仅仅是因为baskslash没有任何有效的字符可以转义,问题是,您的路径中确实有空格,因此必须使用双引号。因此,最好保留双引号而不添加尾随反斜杠:

FORFILES /P "C:\users\DominiqueGerry\Work Files" /S /M *.doc /C "cmd /c echo @fsize"


或者,如果您坚持使用反斜杠,只需将其加倍即可将其转义。

FORFILES /P "C:\users\DominiqueGerry\Work Files\\" /S /M *.doc /C "cmd /c echo @fsize"


编辑,也如@aschipfl的注释中所述,您可以使用.

FORFILES /P "C:\users\DominiqueGerry\Work Files\." /S /M *.doc /C "cmd /c echo @fsize"

09-25 20:27