我使用下面的命令从源文件夹(D:\cnosftp\
)递归解压缩并将提取的文件放在同一个子文件夹中。
FOR /R "D:\cnosftp\" %I IN (*.gz) DO "C:\Program Files\7-Zip\7z.exe" x "%I" -aoa -o"%~dpI"
在 CMD 中运行时,此命令运行良好 - 但当将相同命令放入批处理文件中并运行时 - 它会触发但会立即关闭,不会执行任何操作。知道我在这里做什么吗?或者有人可以告诉我如何将其包装在批处理文件中。
答案1
相反,尝试运行:
FOR /R "D:\cnosftp\" %I IN (*.gz) DO echo "C:\Program Files\7-Zip\7z.exe" x "%I" -aoa -o"%~dpI"
确保输出符合您的预期。
提示:可能不行。根据需要将 % 替换为 %%。(如果两个 % 不起作用,请尝试三个或四个,但我认为两个可能就足够了。)
可能的问题是,FOR 命令在批处理文件中运行时可能需要额外的 %。使用 echo 命令输出您实际运行的命令,通常有助于确定哪些变量按您希望/需要的方式扩展,以及哪些变量需要添加 %s。