“For”表示带空格的文件

时间:2018-02-16 21:24:16

标签: batch-file cmd

问题似乎很简单,但我自己找不到解决方案。

我有一些文件夹,里面有一个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)。

2 个答案:

答案 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