一直以来,我都以为压缩文件,选哪种压缩格式,效率和速度应该都差不多。直到有一次,我在压缩一个文件夹时(我选择的是zip),压缩到一半发现只有一个线程在工作,我就觉得很奇怪。后面尝试了下使用7z,发现效率高多了。对比测试如下图

这是使用zip格式压缩的耗时

这是使用7z格式压缩的耗时,不仅耗时短了很多,并且占用的磁盘空间也少了一些

这是我的压缩脚本,大家可以拿去在自己电脑上尝试

@echo off
setlocal EnableDelayedExpansion

:: 指定 7-Zip 可执行文件的完整路径
set "sevenzip_path=C:\Program Files\7-Zip\7z.exe"

:: 设置压缩源目录和目标压缩文件路径
set "source_dir=H:\Excel\GCS\BAU\BAU-20250410-222"
set "output_file=H:\Excel\GCS\BAU\BUA-7z.7z"

:: 获取开始时间(格式:HH:MM:SS.ss)
set "start_time=%TIME%"

echo start compressing:  %start_time%
echo =============================   %start_time%   =============================

:: 使用7-Zip进行极限压缩(-mx=9表示最大压缩等级)
"%sevenzip_path%" a -t7z "%output_file%" "%source_dir%\*" -mx=9

:: 获取结束时间
set "end_time=%TIME%"

echo =============================   %end_time%   =============================
echo compression ends:  %end_time%

:: 计算耗时(调用 powershell 简单处理时间差)
for /f "tokens=*" %%t in ('powershell -Command "(New-TimeSpan -Start '%start_time%' -End '%end_time%').ToString()"') do set duration=%%t

echo total time consumption:  %duration%
pause

@echo off
setlocal EnableDelayedExpansion

:: 指定 7-Zip 可执行文件的完整路径
set "sevenzip_path=C:\Program Files\7-Zip\7z.exe"

:: 设置压缩源目录和目标压缩文件路径
set "source_dir=H:\Excel\GCS\BAU\BAU-20250410-222"
set "output_file=H:\Excel\GCS\BAU\BUA-zip.7z"

:: 获取开始时间(格式:HH:MM:SS.ss)
set "start_time=%TIME%"

echo start compressing:  %start_time%
echo =============================   %start_time%   =============================

:: 使用7-Zip进行极限压缩(-mx=9表示最大压缩等级)
"%sevenzip_path%" a -tzip "%output_file%" "%source_dir%\*" -mx=9

:: 获取结束时间
set "end_time=%TIME%"

echo =============================   %end_time%   =============================
echo compression ends:  %end_time%

:: 计算耗时(调用 powershell 简单处理时间差)
for /f "tokens=*" %%t in ('powershell -Command "(New-TimeSpan -Start '%start_time%' -End '%end_time%').ToString()"') do set duration=%%t

echo total time consumption:  %duration%
pause