/f 循环的批处理递归中的引号不解析



>我有一个问题。这有点难以解释,所以我只展示代码。

for /r "%1" %%X in (*) do (
    REM ...
    for %%Y in (some strings here) do (
        REM ...
        for /f "delims=" %%Z in ('"%ProgramFiles%7-Zip7z" l -slt "%2"^|findstr /c:"Packed Size = "') do (
            REM ... the line above is causing the problem.
            echo %%Z
            )
        )
    REM ...
    )
)

基本上,7-Zip 路径周围的引号没有被正确解析,我已经尝试了几种不同的插入符号和引号组合,但它们都抛出了各种错误。我知道,Batch 从来没有打算做这种事情,但是有什么方法可以让它工作吗?

编辑:将 7-zip 可执行文件复制到批处理位置的文件夹(没有空格)可以使其运行良好,所以肯定是这样,但我想避免拥有同一程序的多个副本。

使用一个小技巧:

for /f "delims=" %%Z in ('call "%ProgramFiles%7-Zip7z" l -slt "%2"^|findstr /c:"Packed Size = "') do ( echo %%Z )
    "%ProgramFiles%7-Zip7z" l -slt "%2"|for /f "delims=" %%Z in ('findstr /c:"Packed Size = "') do (
        REM ... the line above is causing the problem.
        echo %%Z
        )

最新更新