最近整理资料,发现很多 pdf 文档,占用了不少的存储空间,考虑使用 7-zip 进行压缩存储,由于文件比较多,且分散在不同目录下,一个个文件压缩比较繁琐。为了提高效率且,方便后面取用,所有打算捣鼓个批处理文件,来实现命令行调用 7-zip 来对目录下的每个文档进行单独打包,并将打包后的压缩包存到指定的目录下,详细内容见下文。
本文在 Windows10
64位
操作系统下,使用的命令行提示符(cmd)版本为 10.0.17134.706
, 7-zip 为 64位
16.04
版本,使用下面脚本时请确保安装了 7-zip ,可在此处下载最新版。
for 命令实现
以下展示几种通过 for
命令来遍历打包压缩批处理文件的示例:
@echo off
:: 切换当前编码方式为 UTF-8,处理命令行窗口标题乱码问题
chcp 65001
title 批量压缩当前目录下个文件到各自压缩包
:: 切换回默认 GBK 编码,处理命令行输出乱码问题
chcp 936
echo ---------- START -------------
:: 实现一:遍历当前目录下(不含子目录)的pdf文件, 压缩成与当前文件同名的 7z 格式文件, 最后压缩文件存放在当前目录下新建的 7z 文件夹(可自定义,特换自己想要的文件夹名称)下
:: for %%F in (*.pdf) do (echo "%%~nF" && "C:\Program Files\7-Zip\7z.exe" a -t7z ".\7z\%%~nF.7z" "%%F" )
:: 实现二:遍历当前目录下(不含子目录)的文件夹进行压缩, 压缩成与当前文件夹同名的 7z 格式文件 , 最后压缩文件存放在目录下新建的 7z 文件夹(可自定义,特换自己想要的文件夹名称)下(如想以目录形式打包,可以参考此方式)
:: for /d %%F in (*) do (echo "%%~nF" && "C:\Program Files\7-Zip\7z.exe" a -t7z ".\7z\%%~nF.7z" "%%F" )
:: 实现三:遍历当前目录下(含子目录)的pdf文件进行压缩, 压缩成与当前文件同名的 7z 格式文件 , 最后压缩文件存放在目录下新建的 7z 文件夹(可自定义,特换自己想要的文件夹名称)下
:: for /r %%F in (*.pdf) do (echo "%%~nF" && "C:\Program Files\7-Zip\7z.exe" a -t7z ".\7z\%%~nF.7z" "%%F" )
:: 实现四:遍历当前目录下(含子目录)的pdf文件进行压缩, 压缩成与当前文件同名的 7z 格式文件 , 最后压缩文件存放在与当前文件同目录下
:: for /r %%F in (*.pdf) do (echo "%%~nF" && "C:\Program Files\7-Zip\7z.exe" a -t7z "%%~dpnF.7z" "%%F" )
:: 实现五:遍历当前目录下(含子目录)的pdf文件进行压缩, 打包到 PDF.7z 压缩包内 , 最后压缩文件存放在当前目录下
::for /r %%F in (*.pdf) do (echo "%%~nF" && 7z a -t7z "PDF.7z" "%%F" )
echo ---------- END -------------
pause
以上展示了几种处理方式,更多方式自行扩展,如:
- 上述示例均已
.pdf
类型为例,如果想压缩其他类型文件,可以更换*.pdf
为对应的*.类型
(如,*.doc
),其他通配符自行尝试; - 如想将文件压缩为
zip
格式,则替换命令中的-t7z ".\7z\%%~nF.7z"
替换成-tzip ".\7z\%%~nF.zip"
; - 如想改变压缩算法或比例等,参考下文 7z 的相关命令,进行尝试;
使用方法
- 复制以上代码内容到新建的文本文档内;(可以在此处下载脚本文件)
- 确定要使用哪种实现来批量打包自己的文件,则删除对应实现下
for
命令前的双英文冒号(::
,此符号等效于rem
命令,是批处理文件的注释标识符,双英文冒号后面的内容是注释说明,不会被当做代码执行 ),并保存; - 修改该新建文本文档的扩展名
.txt
改为.bat
,文件名自行定义; - 将文件拷到要使用的目录下,双击运行(切记不要管理员模式运行)。
使用上述代码需要特别注意:
- 当前 for 命令实现版本,不要使用管理员方式运行!不要使用管理员方式运行!不要使用管理员方式运行!重要的事情说三遍!管理员方式运行,会在
System32
目录下生效(因管理员模式运行时,会调用 System32 目录下的 cmd 命令提示符来执行脚本) ,切记!- 代码中的
C:\Program Files\7-Zip\7z.exe
是本人电脑上安装的路径,注意安装了