我有一个场景:
FORFILES /P "C:\users\DominiqueGerry\Work Files\" /S /M *.doc /C "cmd /c echo @fsize"
Run Code Online (Sandbox Code Playgroud)
给我一个错误:
错误:无效的参数/选项 - '@fsize'。
输入“FORFILES /?” 供使用。
但是当我删除斜线时,它就起作用了:
FORFILES /P "C:\users\DominiqueGerry\Work Files" /S /M *.doc /C "cmd /c echo @fsize"
Run Code Online (Sandbox Code Playgroud)
我不明白为什么在没有反斜杠的情况下这不起作用,但在有反斜杠的情况下却不起作用。我找不到任何解释这一点的官方文档。并且在运行帮助时甚至没有看到任何提到的内容,forfiles /?我将不胜感激。
最好的部分是。该错误甚至与当前的问题无关。
老实说,我认为官方帮助中没有记录(至少没有我所看到的),但实际发生的情况是尾随反斜杠实际上转义了最后一个双引号。在我看来,这实际上是一个错误。
错误不相关的原因只是因为forfiles命令检测到格式错误,由于缺少双引号,反斜杠转义了双引号。
您会发现,当您没有双引号时,这种情况不会发生,因此我们假设您的路径中没有空格:
FORFILES /P C:\users\DominiqueGerry\WorkFiles\ /S /M *.doc /C "cmd /c echo @fsize"
Run Code Online (Sandbox Code Playgroud)
不会给你一个错误,只是因为 baskslash 没有任何有效的字符来转义,问题是,你的路径中有一个空格,所以你必须使用双引号。因此最好保留双引号并且不要添加尾部反斜杠:
FORFILES /P "C:\users\DominiqueGerry\Work Files" /S /M *.doc /C "cmd /c echo @fsize"
Run Code Online (Sandbox Code Playgroud)
或者,如果您坚持使用反斜杠,只需通过加倍来逃避它即可。
FORFILES /P "C:\users\DominiqueGerry\Work Files\\" /S /M *.doc /C "cmd /c echo @fsize"
Run Code Online (Sandbox Code Playgroud)
编辑,也如@aschipfl的评论中提到的,您可以使用.:
FORFILES /P "C:\users\DominiqueGerry\Work Files\." /S /M *.doc /C "cmd /c echo @fsize"
Run Code Online (Sandbox Code Playgroud)