我研究了这个标题,并给出了以下CMD文件的答案:
FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
FOR %%X in (*.rar *.zip) DO (
"C:\Program Files\7-zip\7z.exe" x %%X
)
popd
)
cmd 文件在某种程度上运行良好。但它对每个以“ZIP”为扩展名的文件都给出以下消息并询问:
Would you like to replace the existing file:
Path xxxxxx
Size xxxx
Modified: XXXXXXX
with the file from the archive:
Path: xxxx
Size: xxxxx
? Y<es> \ N<o> \ A<lways> \ S<kip all> \A<u>to rename all \ <Q>uit
它停在那里等待输入。但每次解压文件时它都会询问。我打算修改上面的命令文件,用一些检查是否?
找到的内容,然后调用响应 cmd 文件,该文件输出“Y”然后退出,这将带我回到原始命令文件,用它找到的“zip”处理下一个文件。
我不知道我是否走在正确的轨道上,但我希望得到一些帮助。我不知道哪个程序正在输出?
和文本。是 Windows 7 还是 7-zip 在询问?
答案1
我不知道哪个程序输出了“?”和文本
这是7z.exe
。
正确的开关用法是-aoa
(不提示的情况下覆盖所有现有文件。)
例子:
"C:\Program Files\7-zip\7z.exe" x %%X -aoa
-ao(覆盖模式)开关
指定提取期间的覆盖模式,以覆盖磁盘上已存在的文件。
Syntax -ao[a | s | t | u ] Switch Description -aoa Overwrite All existing files without prompt. -aos Skip extracting of existing files. -aou aUto rename extracting file (for example, name.txt will be renamed to name_1.txt). -aot auto rename existing file (for example, name.txt will be renamed to name_1.txt).
答案2
产生提示的是 7-zip。它看起来像-y
转变for7z.exe
做你想做的事:
所有覆盖查询都将被抑制,并且磁盘上与存档中具有相同文件名的文件将被覆盖。
文档的示例表明您应该将其放置-y
在给定的路径之后7z.exe
。