求教,如何用批处理将每个子文件夹下所有内容压缩为zip

F:\download下有100左右子文件夹,每个子文件夹中都有若干文件,现在想把每个子文件夹中的所有文件压缩成zip,求教能不能用BAT实现,7-zip和winrar都有

第1个回答  2017-12-09
@echo off
::设置7ZIP路径
set "zip=C:\Program Files\7-Zip\7z.exe"
::设置操作目录
set "SourDir=F:\download"

cd /d "%SourDir%"
echo 开始压缩……
for /f %%i in ('dir /a-d /b /s') do (
if "%%~xi" NEQ ".zip" (
"%zip%" a "%%~dpni.zip" "%%i">nul
::确认压缩文件解压后可用,把下面一行的echo去掉以删除源文件
echo del /f "%%i"
)
)
echo 处理完成&pause>nul

追问

你好,程序有用是没错啦,不过我的意思是把子文件夹内全部文件打包成一个zip,不是分别压缩,可以吗

追答@echo off
::设置7ZIP路径
set "zip=C:\Program Files\7-Zip\7z.exe"
::设置操作目录
set "SourDir=d:\test2"

cd /d "%SourDir%"
for /d %%i in (*) do "%zip%" a -mx7 "%%i.zip" "%%i"
:: 确认压缩文件解压后可用,删除下面一行的echo以删除源文件夹
 echo rd  /s /q %%i
)

本回答被网友采纳
第2个回答  2017-12-09
是把每个文件单独压缩,还是把整个子文件夹进行压缩?追问

你好,是想把子文件夹内所有文件压缩成一个zip

追答@echo off & title 批量压缩 By 依梦琴瑶

::设置要处理的文件夹
set Folder=F:\download

::设置压缩后是否删除原目录,1 为删除
set DelIt=0

::设置WinRAR的安装路径
set RarPath=%ProgramFiles%\WinRAR

set Path=%Path%;%RarPath%

if "%DelIt%"=="1" set df=-df
for /d %%a in ("%Folder%\*") do (
    rar a "%%~a.zip" -r -ep1 -m5 "%%~a\*" -isnd %df%
)
pause

本回答被提问者采纳