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

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

如何提取文件夹中子目录中包含的多个档案,并将结果输出回档案所在的文件夹。

答案1

首先,安装7-zip

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
)

启动该bat,所有rar/zip文件都会被提取到它们所在的文件夹中。

这是如何运作的?

FOR /D /r %%F 在 ("*") DO (

For循环循环遍历当前目录中的所有文件夹,并将路径放入变量中%%F

推 %CD%

将我们当前所在的目录放入内存。

光盘%%F

将变量中的文件夹设置%%F为当前目录。

FOR %%X in (*.rar *.zip) DO (

对于当前文件夹中的所有rar和文件,执行以下操作:zip

"C:\Program Files\7-zip\7z.exe" x "%%X"

对文件运行 7-zip。需要用引号引起来,%%X因为有些文件名中有空格。

popd

返回到我们之前存储在内存中的上一个目录。

希望这对某人有用。

答案2

我在 Windows Vista 中运行脚本时遇到了问题。当我运行代码时什么也没发生。我需要管理员身份才能运行脚本。当我右键单击 .bat 文件并“以管理员身份运行”时,它不起作用,因为它出于某种原因在 system32 文件夹中启动(如果我没记错的话)。要解决这个问题,只需使用 Windows 环境变量(解释如下:Windows 环境变量)%~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 文件与脚本处于同一级别。它们应该低一级。

我希望这个评论能对某人有所帮助。

答案3

find . -name "*.zip" |  while read filename; do unzip -o -d "`dirname "$filename"`" "$filename"; done;

在当前目录中开始递归搜索,查找所有以 .zip 结尾的文件,然后将其导入循环。对于找到的每个文件,它都会对文件运行解压缩命令,并将输出分流到文件的目录。

答案4

上述答案有效,但是,如果您正在运行Windows 64-bit7-Zip 32-bit,则正确的路径是C:\Program Files (x86)\7-Zip7-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
)

相关内容