批量递归引用 for /f 循环不解析

quotes in batch recursive for /f loop not parsing

我有问题。解释起来有点困难,所以我只展示代码。

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