我有一个场景:
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"