前言
虽然7Z可以全选一键批量解压但是没有批量打包,对于有大批量压缩打包Galgame需求的人来说比较不方便,下面就让杂鱼酱给大家带来一种解决办法把~~杂鱼❤️~~
脚本使用说明
使用方法:
-
复制进
VScode
或者TXT记事本
后保存为.bat
脚本,TXT 中就更改.txt
后缀名为.bat
,之后设置自己要打包的参数。 -
将
7Z
的安装路径,比如默认的C:\Program Files\7-Zip
添加进入系统PATH
变量:- 打开设置——系统——系统信息——高级系统设置——高级页面右下角
环境变量
——用户变量名path
——新建,然后将7Z
安装路径复制进去点击确定。
- 打开设置——系统——系统信息——高级系统设置——高级页面右下角
脚本参数说明:
-
GTR 4000
和-v4000
表示分卷大小为4000MB
。- 脚本工作时会自动检测所要打包的文件夹的大小,如果不超过此分卷设置大小就不会进行分卷打包;如果超过则会打包为
7z.001
型分卷。
- 脚本工作时会自动检测所要打包的文件夹的大小,如果不超过此分卷设置大小就不会进行分卷打包;如果超过则会打包为
-
-p"你的密码"
是设置密码的选项,如果不需要设置密码,可以将此参数删除。如果要设置中文解压密码就在@echo off
下面添加一个chcp 65001
,可查看最后的中文密码设置的实例脚本 -
-mx0
表示压缩等级,最高为-mx9
。 -
-mmt16
表示调用CPU的16线程
。具体设置打开任务管理器数数CPU的框框数目来确定自己的CPU线程数
进行调整。
脚本说明:
此脚本默认调用 7Z
的 LZMA2
算法。
分卷压缩打包脚本
@echo off
setlocal enabledelayedexpansion
:: 指定7-Zip的执行路径,此处要将7Z添加进系统变量中
set "sevenZipPath=7z.exe"
:: 指定目标目录,注意路径要全英文,不过待打包游戏文件夹不用全英文
set "targetDir=D:\COMPRESS\yuzusoft"
cd /d %targetDir%
for /d %%d in (*) do (
echo Compressing: %%d
:: 使用 PowerShell 计算文件夹的总大小
for /F "usebackq" %%s in (`powershell -NoProfile -Command "(Get-ChildItem '%%d' -Recurse | Measure-Object -Property Length -Sum).Sum / 1024 / 1024"`) do set /A folderSize=%%s
echo Folder size: !folderSize! MB
if !folderSize! GTR 4000 (
echo Folder is larger than 4000M, using volume splitting.
"!sevenZipPath!" a -t7z "%%d.7z" "%%d\*" -mx0 -mmt16 -p"此处输入你要设置的压缩包密码" -v4000m
) else (
echo Folder is smaller than 4000M, not using volume splitting.
"!sevenZipPath!" a -t7z "%%d.7z" "%%d\*" -mx0 -mmt16 -p"此处输入你要设置的压缩包密码"
)
echo Done: %%d
)
echo All folders have been compressed appropriately.
pause
无分卷压缩打包脚本
@echo off
setlocal enabledelayedexpansion
:: 指定7-Zip的执行路径,此处要将7Z添加进系统变量中
set "sevenZipPath=7z.exe"
:: 指定目标目录,注意路径要全英文,不过待打包游戏文件夹不用全英文
set "targetDir=C:\Users\NEKO\Galgame"
cd /d %targetDir%
:: 遍历目标目录中的所有文件夹
for /d %%d in (*) do (
echo Compressing folder: %%d
:: 设置压缩包文件名
set "archiveName=%%d.7z"
:: 执行7-Zip命令进行压缩
!sevenZipPath! a -t7z -mx0 -mmt16 -p"nullneko" "!archiveName!" "%%d\"
)
echo All folders have been compressed appropriately.
pause
中文密码设置示例
@echo off
chcp 65001
setlocal enabledelayedexpansion
set "sevenZipPath=7z.exe"
set "targetDir=D:\GalgamesCOMPRESS"
cd /d %targetDir%
for /d %%d in (*) do (
echo Compressing: %%d
for /F "usebackq" %%s in (`powershell -NoProfile -Command "(Get-ChildItem '%%d' -Recurse | Measure-Object -Property Length -Sum).Sum / 1024 / 1024"`) do set /A folderSize=%%s
echo Folder size: !folderSize! MB
if !folderSize! GTR 4000 (
echo Folder is larger than 4000M, using volume splitting.
"!sevenZipPath!" a -t7z "%%d.7z" "%%d\*" -mx5 -mmt16 -p"杂鱼" -v4000m
) else (
echo Folder is smaller than 4000M, not using volume splitting.
"!sevenZipPath!" a -t7z "%%d.7z" "%%d\*" -mx5 -mmt16 -p"杂鱼"
)
echo Done: %%d
)
echo All folders have been compressed appropriately.