“For”表示带空格的文件

问题描述 投票:1回答:2

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

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

batch-file cmd
2个回答
1
投票

help for

for /f根据默认值或提供的delims将结果拆分为标记。你需要这样的东西:

for /f "delims=" ....

应捕获整个输出。另一种选择是:

for /f "tokens=*" %%G ... do echo %%G

1
投票

对我来说工作:

for /f  "delims=" %%f in ('dir /b /A:-D "*.jpg"') do @echo %%f

并返回:

foo bar.jpg
© www.soinside.com 2019 - 2024. All rights reserved.