Windows 双引号和for/f的问题

Windows 双引号和for/f的问题,windows,batch-file,double-quotes,Windows,Batch File,Double Quotes,我正在编写一个批处理脚本,并试图使它在包含空格的目录中工作。在特定行中,我执行以下循环: for /f "tokens=*" %%A in ('%~dp0fciv\fciv.exe -md5 %~dp1%FN%') do ... 如果当前目录包含空格,循环将无法调用可执行文件。现在我用双引号来修正它: for /f "tokens=*" %%A in ('"%~dp0fciv\fciv.exe" -md5 %~dp1%FN%') do ... 在参数没有空格之前,此操作可以正常工作。因此,我

我正在编写一个批处理脚本,并试图使它在包含空格的目录中工作。在特定行中,我执行以下循环:

for /f "tokens=*" %%A in ('%~dp0fciv\fciv.exe -md5 %~dp1%FN%') do ...
如果当前目录包含空格,循环将无法调用可执行文件。现在我用双引号来修正它:

for /f "tokens=*" %%A in ('"%~dp0fciv\fciv.exe" -md5 %~dp1%FN%') do ...
在参数没有空格之前,此操作可以正常工作。因此,我也需要把它放在双引号中:

for /f "tokens=*" %%A in ('"%~dp0fciv\fciv.exe" -md5 "%~dp1%FN%"') do ...
但这并不像预期的那样有效。我在cmd中直接进行了附加测试:

for /F "tokens=* usebackq" %A in (`"c:\Test Folder\fciv\fciv.exe" -md5 "d:\Somefile"`) do echo %A
for /F "tokens=*" %A in ('"c:\Test Folder\fciv\fciv.exe" -md5 "d:\Somefile"') do echo %A
错误是:
“c:\Test”未被识别为内部或外部命令、可操作程序或批处理文件。

我还试图再次删除第二个双引号:

for /F "tokens=*" %A in ('"c:\Test Folder\fciv\fciv.exe" -md5 d:\Somefile') do echo %A
这个命令做了它应该做的事情


为什么会发生错误以及如何实现所需的功能?

将整个命令括在反引号中,并用引号括起来

C:\Users\User>for /F "usebackq tokens=*" %A in (`""C:\Users\Use r\Desktop\Editor\UEd\UEd.exe" -md5 "d:\Somefile""`) do echo %A

如果没有参数,删除最后一个反引号可能会起作用。

尽管
usebackq
和反引号现在是多余的,但可以使用单引号。@fredasw:我如何纠正这种情况
对于(''c:\Test Folder\testfile'')中的/F“usebackq”%A,是否设置/A大小=%~zA
?对于没有空格的文件夹,它可以完美地工作。