@echo off
echo 文件夹子目录打包脚本 V1.0.0.20210106
setlocal enabledelayedexpansion
set sDstDirPath=%1
SET sDstDirPath="%sDstDirPath%"
SET sDstDirPath=%sDstDirPath:"=%
rem echo sDstDirPath=%sDstDirPath%
if "%sDstDirPath%"=="" (
echo 目标文件夹路径为空
echo =========================
echo 调用格式为CompressDir2Zip 目标文件夹路径 压缩程序路径
echo 压缩程序路径可以为空
exit /b 1
)
set sZipExePath=%2
SET sZipExePath="%sZipExePath%"
SET sZipExePath=%sZipExePath:"=%
rem echo sZipExePath=%sZipExePath%
if "%sZipExePath%"=="" (
set sZipExePath=C:\Program Files\7-Zip\7z.exe
)
if not exist "%sZipExePath%" (
echo 压缩程序%sZipExePath%不存在
exit /b 2
)
pushd %~dp0
cd /d "%sDstDirPath%"
echo 即将打包下列文件夹
dir /B /A:D
echo ========打包开始==========
for /f "delims=" %%i in ('dir /B /A:D') do (
set sDirName=%%i
rem echo sDirName=!sDirName!
set sZipName=!sDirName!.zip
rem echo sZipName=!sZipName!
if exist "!sZipName!" (del /Q "!sZipName!") >nul || goto :error
"%sZipExePath%" a "!sZipName!" "!sDirName!" >nul || goto :error
echo 已将%%i文件夹的打包
)
goto :success
echo ========打包结束==========
endlocal
:error
popd
echo Failed with error #%errorlevel%.
exit /b %errorlevel%
:success
popd
exit /b 0