迭代显式给定的包含空格的文件夹

时间:2017-11-30 13:45:40

标签: windows batch-file for-loop

我已经阅读了十几个帖子,我仍然无法解决这个问题(对我感到羞耻)。我的批处理文件

for %%x in ( 
    "%PROGRAMFILES(X86)%"
    "%PROGRAMFILES%"
    ) do (
        echo x=%%x
        )
    )

应该输出

 x=C:\Program Files (x86)
 x=C:\Program Files

但输出

 x="C:\Program Files (x86)"
 x="C:\Program Files"

我明白为什么会这样做,但我无法相应地修改for循环。

我的目的是让一个嵌套循环迭代显式给定的文件夹(" ..."作为更多文件夹名称的占位符):

for %%x in ( 
    %PROGRAMFILES(X86)%
    %PROGRAMFILES%
    ...
    ) do (
        for %%y in ( ... ) do (
            if exist %%x\%%y (
                echo yep
            )
        )
    )

1 个答案:

答案 0 :(得分:1)

    echo x=%%~x

~删除封闭引号(在正确的上下文中)

所以在第二部分,

        if exist "%%~x\%%~y" (

(需要重新插入引号,因为目标文件名包含空格)