Windows批处理脚本解压缩目录中的文件

时间:2013-06-13 01:38:10

标签: windows batch-file cmd unzip

我想解压缩某个目录中的所有文件,并在解压缩时保留文件夹名称。

以下批处理脚本并不能完全解决问题。它只会抛出一堆文件,而不会将它们放入文件夹中,甚至无法完成。

这里有什么问题?

for /F %%I IN ('dir /b /s *.zip') DO (

    "C:\Program Files (x86)\7-Zip\7z.exe" x -y -o"%%~dpI" "%%I" 
)

4 个答案:

答案 0 :(得分:27)

试试这个:

for /R "C:\root\folder" %%I in ("*.zip") do (
  "%ProgramFiles(x86)%\7-Zip\7z.exe" x -y -o"%%~dpI" "%%~fI" 
)

或(如果要将文件解压缩到以Zip文件命名的文件夹中):

for /R "C:\root\folder" %%I in ("*.zip") do (
  "%ProgramFiles(x86)%\7-Zip\7z.exe" x -y -o"%%~dpnI" "%%~fI" 
)

答案 1 :(得分:2)

Ansgar的上述回复对我来说非常完美,但如果提取成功,我还想删除档案。我找到了this并将其合并到上面给出:

for /R "Destination_Folder" %%I in ("*.zip") do (
  "%ProgramFiles%\7-Zip\7z.exe" x -y -aos -o"%%~dpI" "%%~fI"
  "if errorlevel 1 goto :error"
    del "%%~fI"
  ":error"
)

答案 2 :(得分:1)

试试这个。

@echo off
for /F "delims=" %%I IN (' dir /b /s /a-d *.zip ') DO (
    "C:\Program Files (x86)\7-Zip\7z.exe" x -y -o"%%~dpI\%%~nI" "%%I" 
)
pause

答案 3 :(得分:-1)

您的某些zip文件是否可能在名称中有空格?如果是这样,你的第一行应该是:

for /F "usebackq" %%I IN (`dir /b /s "*.zip"`) DO (

注意使用`代替' 见FOR /?