gpt4 book ai didi

windows - 解压所有子文件夹中的所有zip文件

转载 作者:行者123 更新时间:2023-12-03 11:12:57 26 4
gpt4 key购买 nike

如何使用cmd批处理文件迭代目录中的所有文件夹并解压缩每个文件夹中的所有zip文件?我已经能够遍历所有子文件夹,但是我无法在每个子文件夹中进行迭代。

FOR /D %%R IN ("*") DO FOR /D %%S IN (*/%RR) unzip %%S

文件夹结构
folder\subfolder1\zip1
folder\subfolder2\zip2
folder\subfolder3\zip3
folder\subfolder4\zip4

我想在其中包含文件夹中提取每个zip文件的内容。 zip文件和子文件夹具有不同的名称。

最佳答案

for /d %%r in (*) do for %%s in ("%%r\*.zip") do echo ---unzip %%s using output folder %%~dps
我假设您示例中的 zip1 文件是 zip1.zip ,并且每个子文件夹中可能有更多zip文件。但是,如果没有,这也适用于一个zip文件。脚本底部还有一个替代方法,可用于不带 .zip 的zip文件

这些文件用于测试。在“子文件夹”中有一个意想不到的空格,因为针对带有空格的路径名测试Batch脚本总是很好的。

C:\temp\folder\sub folder1\zip1.zip
C:\temp\folder\sub folder1\zip1b.zip
C:\temp\folder\subfolder2\zip2.zip
C:\temp\folder\subfolder2\zip2b.zip
C:\temp\folder\subfolder3\zip3.zip
C:\temp\folder\subfolder3\zip3b.zip
C:\temp\folder\subfolder4\zip4.zip
C:\temp\folder\subfolder4\zip4b.zip

这不是Windows命令。它可以来自许多来源,因此其参数格式可能有所不同。在我的示例中,我正在使用7zip。
无论如何,您可能需要使用任何解压缩实用程序(或CD的目录)来指定输出目录。我的样本显示了如何获取其名称。末尾有一个斜杠,对于7z来说还可以,但是其他实用程序可能会出现问题。可以摆脱它,但需要更多代码。

您要求将所有zip文件解压缩到其自己的目录中。但是,如果两个zip文件包含相同名称的文件,它们将互相覆盖,这就是为什么更希望将每个zip提取到其自己的文件夹中,且名称与zip文件相同。为此,必须创建文件夹,并且整个脚本应包含多行内容。

/d 对 不信任
这就是为什么我还为/f
版本包括dirt_strong的原因,该版本利用dir命令

如果您希望以更深的路径更递归地使用此命令,例如: folder\subfolder3\more\paths\zip1.zip,这是可能的。只需使用下面示例中的 for /f,然后将 /s添加到 dir命令: 'dir *.* /s /ad /b'即可。

该命令应执行您要求的操作: for /d %%r in (*) do for %%s in ("%%r\*.zip") do 7z x -y "%%s" -o"%%~dps"
这是整个测试用例脚本:
@echo off

echo ******
echo List all zip files using for /f
echo ******
for /f "tokens=*" %%r in ('dir *.* /ad /b') do for %%s in ("%%r\*.zip") do echo ---unzip %%s using output folder %%~dps

echo.
echo ******
echo List all zip files using for /d
echo ******
for /d %%r in (*) do for %%s in ("%%r\*.zip") do echo ---unzip %%s using output folder %%~dps

echo.
echo 1: extract to folders containing zip files - possible overwrites
echo 2: extract each zip to a folder named by the name of the zip file
choice /c 12
if not errorlevel 2 (

for /d %%r in (*) do for %%s in ("%%r\*.zip") do 7z x -y "%%s" -o"%%~dps"

) else (

rem ------ this is the alternative to extract each zip to its own folder
for /d %%r in (*) do for %%s in ("%%r\*.zip") do (
echo.
echo ******
echo *** Unzipping: %%s to folder: %%~dpns
mkdir "%%~dpns"
7z x -y "%%s" -o"%%~dpns"
)
rem ------

)
pause

exit /b

In case zip files does not have .zip extension:

for /d %%r in (*) do for %%s in ("%%r\*.*") do (
echo.
echo ******
echo *** Unzipping: %%s to folder: %%~dpns-unzipped
mkdir "%%~dpns-unzipped"
7z x -y "%%s" -o"%%~dpns-unzipped"
)

关于windows - 解压所有子文件夹中的所有zip文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42253595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com