我如何提取该文件夹的子目录中的所有档案?

如何提取包含在文件夹子目录中的多个归档,然后将结果输出到归档所在的文件夹中。

首先,安装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 ( 

对于当前文件夹中的所有rarzip文件,请执行以下操作:

 "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-bit7-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 )