我想解压缩某个目录中的所有文件,并在解压缩时保留文件夹名称。
下面的批处理脚本并不完美。 它只是抛出一堆文件,而不把它们放到一个文件夹,甚至没有完成。
这里有什么问题?
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 /?