![]()
前言
虽然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 算法。
分卷压缩打包脚本
bash
@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
无分卷压缩打包脚本
bash
@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
中文密码设置示例
text
@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.
![]()