TEXT
@ECHO OFF
COLOR 2F
TITLE 批量文件 CAB 打包工具
Set TF=files.txt
CLS
Echo.
Echo          ╭════════════════╮
Echo         ║                 ║
Echo     ╭═══┤       批量文件 CAB 打包工具      ├═══╮
Echo    ║    ║                 ║    ║
Echo    ║    ╰═════════════════╯    ║
Echo    ║ 1. 待压缩文件的父目录需与本程序在同一路径下;     ║
Echo    ║ 2. 待压缩文件所在路径(包括父路径)不许有空格。     ║
Echo    ║ 3. 如果你输入的路径或文件名中有空格,       ║
Echo    ║  请在外边用上引号                ║
Echo    ╰══════════════════════════╯
Echo.
Echo 请输入需压缩的文件所在的目录名,如 Files
Echo.
Set Ds=
Set /P Ds=请输入:
Echo.
Echo 请输入需要保存的压缩包文件名,如 Files.cab
Echo.
Set FCab=
Set /P FCab=请输入:
CLS
Echo.
Echo          ╭════════════════╮
Echo         ║                 ║
Echo     ╭═══┤       批量文件 CAB 打包工具      ├═══╮
Echo    ║    ║                 ║    ║
Echo    ║    ╰═════════════════╯    ║
Echo    ║                          ║
Echo    ║                          ║
Echo    ║                      压缩中......                 ║
Echo    ║                          ║
Echo    ╰══════════════════════════╯
Echo.
If Exist "%TF%" Del "%TF%" >NUL
For %%i In (%Ds%) Do Set FP=%%~dpi
SETLOCAL ENABLEDELAYEDEXPANSION
rem 启用延迟的环境变量
For /f "delims=" %%i In ('dir %Ds% /s /b /a-d') Do (
Set str=%%i
Set "str=!str:%FP%%Ds%\=!"
rem %PATH:str1=str2%这个操作就是把变量%PATH%的里的str1全部用str2替换
rem 在延迟的环境变量中用!str!来表示%str%
>>%TF% Echo "%%i" "!str!"
)
ENDLOCAL
MAKECAB /D CompressionType=LZX /D CompressionMemory=21 /D MaxDiskSize=CDROM /D Cabinet=On /D Compress=On /D FolderSizeThreshold=5000000 /D DiskDirectoryTemplate=.\ /D CabinetNameTemplate=%FCab% /F %TF%
@del /q files.txt
@del /q setup.inf
@del /q setup.rpt
@echo 压缩完成,按任意键退出...&pause > nul