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

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

下面的批处理脚本并不完美。 它只是抛出一堆文件,而不把它们放到一个文件夹,甚至没有完成。

这里有什么问题?

for /F %%I IN ('dir /b /s *.zip') DO ( "C:\Program Files (x86)\7-Zip\7z.exe" x -y -o"%%~dpI" "%%I" ) 

尝试这个:

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

Ansgar上面的回答对我来说是非常完美的,但是如果提取成功,我也想删除档案。 我发现这一点 ,并将其纳入上述给予:

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

尝试这个。

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

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

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

注意使用`而不是'见FOR /?