[BAT脚本] WinRAR批量压缩文件

之前一直写Python脚本用来批量打包文件,但是每次重装系统后就得配置Python环境,感觉很麻烦,就研究了一下CMD命令怎么写。

一些程序是支持命令行输入的,比如WinRAR、7-ZIP。

在WinRAR的安装目录右键“在终端打开”,输入 ./Rar 即可查看WinRAR支持的命令。

7zip也是一样的,在7zip的安装目录右键“在终端打开”,输入 ./7z 即可查看7zip支持的命令。

正常情况下,应当是将Rar.exe添加到系统的path变量里去。这里主要是为了方便,所以直接通过CMD来执行。

以下例子中的WinRAR是X64位版本,默认目录安装,如果你自己设置了WinRAR的安装位置脚本也需要改动。

复制粘贴到记事本,另存为.bat文件,编码选ANSI:


@echo off

::指定WinRAR程序位置C:\Program Files\WinRAR\Rar.exe
set "rarpath=C:\Program Files\WinRAR\Rar.exe"
::指定压缩文件密码123
set "rarpass=123"
::指定压缩文件注释位置C:\Program Files\WinRAR\NOTE.txt
set "rararch=C:\Program Files\WinRAR\NOTE.txt"

echo ---------- START -------------

::(备选)遍历当前目录(不含子目录)的特定文件
::for %%F in (*.pdf) do CALL :RarArchive %%f

::(备选)遍历当前目录下(含子目录)的全部文件
::for /r %%F in (*) do CALL :RarArchive %%f

::遍历当前目录的全部文件
for %%f in (*) do CALL :RarArchive %%f

::遍历当前目录下(不含子目录)的文件夹
for /d %%d in (*) do CALL :RarArchive %%d

:RarArchive 
if not %~dnp1=="" (
    ::参数说明:-m5 压缩质量5(最好),-md128m 字典大小128M,-p 压缩文件加密
    "%rarpath%" a -m5 -md128m -k -p"%rarpass%" "%~dnp1.rar" "%~1"

    ::(备选)参数说明:-z 从文件读取注释,-m5 压缩质量5(最好),-md128m 字典大小128M,-p 压缩文件加密,-hp 压缩文件加密时加密文件名
    ::"%rarpath%" a -z"%rararch%" -m5 -md128m -k -hp"%rarpass%" "%~dnp1.rar" "%~1"
)

echo ----------  END  -------------

pause

使用的时候记得修改上面的三个参数,可以删除最后的pause,就不用一直按任意键继续了。

命令可以对照WinRAR命令表自行修改。

这个脚本当前有一个问题,使用的时候会把自己也压缩一遍。

因为批处理命令这东西非常的UNIX,逻辑处理方式非常的计算机,有些地方就挺反常识的。

比方说想实现这个逻辑就得传值,但是BAT命令不能凭空创建一个新值,如果写for循环,就得循环套循环。

这时候就体现出Python的优势了……直接if file.endswith(".bat")就好了。

等我研究出来解决方法再更新吧。

THE END
夜华子酱我知道你很急,但你先别急