关于 windows 下 CMD 命令 FOR 循环批量处理文件时,文件名中含有 1 个及以上空格的问题

2016-07-05 10:54:30 +08:00
 shamashii
全相对路径,假设程序 test.exe,用法 test.exe filename.bmp
对目录下所有 bmp 文件执行上述命令:
for %a in (*.bmp) do test.exe %a
问题:
当文件名含有 1 个或多个空格时,如 file name.bmp ,出错。
查看原因每次循环运行命令时候*匹配的文件名没有被“”扩进去,程序以空格为界定确定 argv ,上述单条例子变成
test.exe file name.bmp 所以报错
直接 cmd 下:
test.exe ” file name.bmp “ 无问题

尝试过各种添加、参数并未成功。

想实现的目的:
有无办法让 for %a in (*.bmp) do test.exe %a 中的*.bmp 每次匹配到的文件名加到“”中去(试过“*.bmp ”是没用的)

目前的解决方案:
forfiles /M *.bmp /C "cmd /c test.exe @file"
forfiles 命令中的 @file 返回的文件名是含“”的
4321 次点击
所在节点    编程
6 条回复
lowzoom
2016-07-05 11:45:09 +08:00
有试过
for %a in (*.bmp) do test.exe “%a ”
麽?
lowzoom
2016-07-05 11:45:57 +08:00
```
for %a in (*.bmp) do test.exe “%a ”
```
测试回复能不能用 mardown
lowzoom
2016-07-05 11:47:45 +08:00
@lowzoom 好吧,只能人工说明了,右边双引号前面的空格应去掉,是系统自动加的
shamashii
2016-07-05 12:04:05 +08:00
@lowzoom 解决,感谢
imn1
2016-07-05 13:00:30 +08:00
就算 linux ,文件名或路径含有空格也要用引号,这是常识啊
Izual_Yang
2016-08-20 20:02:01 +08:00
for 的变量扩展用法,里面有短文件名

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/290343

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX