shamashii
V2EX  ›  编程

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

  •  
  •   shamashii · Jul 5, 2016 · 4959 views
    This topic created in 3606 days ago, the information mentioned may be changed or developed.
    全相对路径,假设程序 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 返回的文件名是含“”的
    6 replies    2016-08-20 20:02:01 +08:00
    lowzoom
        1
    lowzoom  
       Jul 5, 2016   ❤️ 1
    有试过
    for %a in (*.bmp) do test.exe “%a ”
    麽?
    lowzoom
        2
    lowzoom  
       Jul 5, 2016
    ```
    for %a in (*.bmp) do test.exe “%a ”
    ```
    测试回复能不能用 mardown
    lowzoom
        3
    lowzoom  
       Jul 5, 2016
    @lowzoom 好吧,只能人工说明了,右边双引号前面的空格应去掉,是系统自动加的
    shamashii
        4
    shamashii  
    OP
       Jul 5, 2016
    @lowzoom 解决,感谢
    imn1
        5
    imn1  
       Jul 5, 2016
    就算 linux ,文件名或路径含有空格也要用引号,这是常识啊
    Izual_Yang
        6
    Izual_Yang  
       Aug 20, 2016 via Android
    for 的变量扩展用法,里面有短文件名
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5740 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 02:07 · PVG 10:07 · LAX 19:07 · JFK 22:07
    ♥ Do have faith in what you're doing.