for /f "delims=" %%a in ('"%systemRoot%\system32\find.exe" /?') do @echo %%a
是的,前面的代码可以工作。虽然不是很有用,但它能正常运行。当我试着写一个批处理文件来回答另一个问题时,我遇到了以下情况:
for /f %%a in ('"%systemRoot%\system32\find.exe" /c /v "" ^< "c:\something.txt"') do @echo %%a
for /f %%a in ('"%systemRoot%\system32\find.exe" /c /v "" "c:\something.txt"') do @echo %%a
前两行都会返回The filename, directory name, or volume label syntax is incorrect
。
for /f %%a in ('"%systemRoot%\system32\find.exe" /c /v "" ^< c:\something.txt' ) do @echo %%a
for /f %%a in ('"%systemRoot%\system32\find.exe" /c /v "" c:\something.txt' ) do @echo %%a
前两行代码都返回了The system cannot find the file specified
我尝试过对引号进行转义、重复使用、添加反斜杠、更改为单引号或反引号,并在for
命令中设置相应选项,但我无法使它工作。我尝试的所有组合都失败了。
如果要运行的命令加上引号并且带有引号的参数,则会失败。
是的,我知道不需要在find
周围添加引号,如果去掉,前面四行的任何一行都可以工作(忽略输出、分隔符和标记)。
但是,在确实需要在命令周围添加引号的情况下(我知道某些系统禁用了8dot3name
的行为),是否有任何方法使其工作?我在这里错过了什么?
in ('^""some cmd.exe" "some|arg"^"')
。此外,我记不清具体细节了,但我认为微软文档存在一些小缺陷——我认为它没有完全准确地描述引号的行为。 - dbenham