问题似乎很简单,但我自己找不到解决方案。
我有一些文件夹,里面有一个jpg文件(foo bar.jpg)和这个bat文件:
for /f %%f in ('dir /b /a:-d "*.jpg"') do echo "%%f"
pause
出于某种原因而不是这样的事情:
C:\Test>echo foo bar.jpg
foo bar.jpg
我看到了这个:
C:\Test>echo "foo"
"foo"
尽管我已经把%%f
放在引号内。
即命令提示符不理解文件名中的空格。
怎么解决?
(在我的真实代码中,我将使用copy
而不是echo
)。
见help for
。
for /f
根据默认值或提供的delims将结果拆分为标记。你需要这样的东西:
for /f "delims=" ....
应捕获整个输出。另一种选择是:
for /f "tokens=*" %%G ... do echo %%G
对我来说工作:
for /f "delims=" %%f in ('dir /b /A:-D "*.jpg"') do @echo %%f
并返回:
foo bar.jpg