如何提取包含在文件夹子目录中的多个归档,然后将结果输出到归档所在的文件夹中。
首先,安装7-zip 。
在包含许多内部存档的子目录的根目录下创build一个bat文件。 然后粘贴以下内容:
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 )
启动蝙蝠,所有rar /拉链将被提取到它们所在的文件夹中。
这个怎么用?
FOR / D / r %% F in(“*”)DO(
循环循环遍历当前目录中的所有文件夹,并将path放入variables
%%F。
推%CD%
把我们当前的目录放到内存中。
cd %% F
将variables
%%F的文件夹设置为当前目录。
FOR %%X in (*.rar *.zip) DO (对于当前文件夹中的所有
rar和zip文件,请执行以下操作:
"C:\Program Files\7-zip\7z.exe" x "%%X"在文件上运行7-zip。 在
%%X附近需要引号,因为一些文件名中有空格。
popd返回到先前存储在内存中的上一个目录。
希望这对某人有用。
从Windows Vista运行脚本时遇到问题。 当我运行代码什么都没有发生。 我需要是pipe理员才能够运行脚本。 当我右键点击.bat文件和“以pipe理员身份运行”它不工作,因为它出于某种原因开始在system32文件夹(如果我没有记错的话)。 要解决这个问题,只需使用Windows环境variables(在这里解释: Windows环境variables )%〜dp0切换回脚本运行的目录。
@echo on cd %~dp0 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 )
确保没有* .rar或* .zip文件与脚本处于同一级别。 他们应该是一个层次。
我希望这个评论帮助了一个人。
find . -name "*.zip" | while read filename; do unzip -o -d "`dirname "$filename"`" "$filename"; done;
在当前目录开始recursionsearch,find以.zip结尾的所有文件,然后将其转换为循环。 对于find的每个文件,它都会在文件上运行一个unzip命令,并将输出分stream到文件的目录中。
上面的答案,但是,如果您正在运行Windows 64-bit和7-Zip 32-bit ,则正确的path是C:\Program Files (x86)\7-Zip for 7-Zip。 以下是为我工作的脚本。
@echo on cd %~dp0 FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F FOR %%X in (*.rar *.zip) DO ( "C:\Program Files (x86)\7-zip\7z.exe" x %%X ) popd )