问题似乎很简单,但我自己找不到解决方案。
我有一些文件夹,里面有一个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
)。
答案 0 :(得分:1)
请参阅help for
。
for /f
根据默认或提供的delims将结果拆分为标记。你需要这样的东西:
for /f "delims=" ....
应捕获整个输出。另一种选择是:
for /f "tokens=*" %%G ... do echo %%G
答案 1 :(得分:1)
对我而言:
for /f "delims=" %%f in ('dir /b /A:-D "*.jpg"') do @echo %%f
并返回:
foo bar.jpg