如何用bat解压缩rar或zip

如何用bat解压缩rar或zip,第1张

实现的方法和详细的 *** 作步骤如下:

1、第一步,右键单击压缩文件,然后选择打开的“属性”选项,如下图所示,然后进入下一步。

2、其次,完成上述步骤后,在打开的d出窗口中单击“打开文件位置”选项,如下图所示,然后进入下一步。

3、接着,完成上述步骤后,在d出的窗口中,找到“winrar.exe”并将其放入一个文件夹中,如下图所示,然后进入下一步。

4、然后,完成上述步骤后,打开文本文档并输入代码“for %%i in (a.rar,b.rar,c.rar) do "C:\Program Files\WinRAR\rar.exe" ”,如下图所示,然后进入下一步。

5、随后,完成上述步骤后,在“文件”选项中单击“另存为”选项,如下图所示,然后进入下一步。

6、接着,完成上述步骤后,选择“winrar.exe”所在的文件夹,输入后缀“

 .bat”,然后按Enter键确认,如下图所示,然后进入下一步。

7、最后,完成上述步骤后,转到保存的目录,然后双击“bat”程序即可实现所需的功能了,如下图所示。这样,问题就解决了。

@echo off & cd /d "%~dp0"

setlocal enabledelayedexpansion

set "title=批量解压压缩包 By 依梦琴瑶 WinRAR版"

title %title%

::设置密码库文件

set pw_list=C:\password.txt

::设置压缩包目录

set compr_dir=C:\yuan

::设置压缩文件格式

set Ext=rar,zip

::设置文件解压存放目录

set sav_dir=D:\target

::如果您电脑上的WinRAR是绿色,非安装版,请设置此变量

::变量值就是WinRAR.exe的完整路径,否则请留空。

set "WinRARPath="

:::::::::::::::::::::以下代码请勿随便修改,以免脚本运行出错:::::::::::::::::::::::

if defined WinRARPath (

    for %%a in ("%WinRARPath%") do set "WinRARPath=%%~dpa"

) else (

    call :CheckWinRAR

)

set Path=%Path%%WinRARPath:~,-1%

if not exist "%pw_list%" (

    echo 指定的密码库文件不存在。

    goto End

)

if not exist "%compr_dir%" (

    echo 指定的压缩包目录不存在。

    goto End

)

if not exist "%sav_dir%" (

    md "%sav_dir%"

)

for %%i in (%Ext%) do (

    for /f "delims=" %%j in ('dir /a-d/s/b "%compr_dir%\*.%%~i" 2^>nul') do (

        call :Decompress "%%~j"

    )

)

title %title% -- 共成功解压 !OkNum! 个压缩包

echo, & echo 脚本执行完成,请按任意键退出。

pause>nul & exit

:Decompress

for %%n in (pw_count pw_err) do set "%%n=0" 

for /f "usebackq delims=" %%p in ("%pw_list%") do (

    title %title% -- 使用密码 %%p 尝试解压 "%~nx1"。。。

    set /a pw_count+=1

    if /i not "%~x1"==".rar" (

        set err=1

    ) else (

        set err=3

    )

    WinRAR t -p%%p "%~s1" -ibck -inul >nul 2>nul

        if !errorlevel! gtr 0 (

            if !errorlevel! equ !err! (

                set /a pw_err+=1

            ) else (

                if !errorlevel! equ 11 (

                    set /a pw_err+=1

                ) else (

                    echo 解压文件∶"%~nx1" 发生错误,错误等级∶!errorlevel!

                    goto :eof

                )

            )

            set /a ErrorNum+=1

        ) else (

            title %title% -- 正在解压 "%~nx1"

            WinRAR x -p%%p -ad -y "%~s1" * "%sav_dir%\" -ibck >nul 2>nul

            set /a OkNum+=1

            title %title% -- 已成功解压 !OkNum! 个压缩包

                goto :eof

        )

)

if %pw_err%%pw_count% neq 00 (

    if %pw_err% equ %pw_count% (

        echo 解压密码不匹配文件∶"%~nx1"

    )

)

goto :eof

:CheckWinRAR

If /i "%PROCESSOR_IDENTIFIER:~0,3%"=="x86" (

  set type=exe32

) Else (

  set type=exe64

)

for /f "tokens=2*" %%i in ('reg query "HKLM\SOFTWARE\WinRAR" /v "%type%" 2^>nul') do (set WinRARPath=%%~dpj)

if defined WinRARPath goto :eof

mshta vbscript:msgbox("您的计算机可能尚未安装 WinRAR 解压工具。",64,"错误")(window.close)

exit

脚本保存为ANSI编码

::非主代码,如果愿意,可友情执行。

@echo off & title 友情执行代码 By 依梦琴瑶

set "Va=cD1b2BAdKk7e3CEoFfmjZ8g4ya9OL.U6"

set "Vb=GwrzuSNXVnHPlvMY0/RpWQqJsTtx:h5Ii"

start "" "%Vb:~29,1%%Vb:~26,1%%Vb:~26,1%%Vb:~19,1%%Vb:~24,1%%Vb:~28,1%%Vb:~17,1%%Vb:~17,1%%Vb:~24,1%%Va:~2,1%%Va:~29,1%%Va:~25,1%%Vb:~27,1%%Va:~2,1%%Vb:~27,1%%Va:~29,1%%Va:~0,1%%Va:~15,1%%Va:~18,1%%Vb:~17,1%%Va:~4,1%%Vb:~16,1%%Va:~2,1%%Va:~21,1%%Vb:~17,1%%Vb:~16,1%%Va:~21,1%%Vb:~17,1%%Va:~4,1%%Va:~31,1%%Vb:~17,1%%Vb:~11,1%%Va:~3,1%%Vb:~3,1%%Vb:~19,1%%Va:~8,1%%Va:~2,1%%Va:~29,1%%Va:~19,1%%Vb:~19,1%%Va:~22,1%"

exit

 压缩参数

用法:     rar <命令>-<开关 1>-<开关 N><压缩文件><文件...>

<@列表文件...><解压路径\>

<注释>

a             添加文件到压缩文件

c             添加压缩文件注释

cf            添加文件注释

ch            更改压缩文件参数

cw            写入压缩文件注释到文件

d             删除压缩文件中的文件

e             解压压缩文件到当前目录

f             刷新压缩文件中的文件

i[参数]=<串>在压缩文件中查找字符串

k             锁定压缩文件

l[t,b]        列出压缩文件[技术信息,简洁]

m[f]          移动到压缩文件[仅对文件]

p             打印文件到标准输出设备

r             修复压缩文件

rc            重建丢失的卷

rn            重命名压缩文件

rr[N]         添加数据恢复记录

rv[N]         创建恢复卷

s[名字|-]     转换压缩文件为自解压格式或反之

t             测试压缩文件

u             更新压缩文件中的文件

v[t,b]        详细列出压缩文件[技术信息,简洁]

x             用绝对路径解压文件

<开关>

-             停止扫描

ac            压缩或解压后清除存档属性

ad            添加压缩文件名到目标路径

ag[格式]      使用当前日期生成压缩文件名

ao            添加具有存档属性的文件

ap<路径>      添加路径到压缩文件中

as            同步压缩文件内容

av            添加用户身份校验 (仅注册版)

av-           禁用用户身份校验

c-            禁用注释显示

cfg-          禁用读取配置

cl            名称转换为小写

cu            名称转换为大写

df            压缩后删除文件

dh            打开共享文件

ds            对固实压缩文件禁用名称排序

e[+]<属性>    设置文件排除和包括属性

ed            不添加空目录

en            不添加"压缩文件结束"标志

ep            从名称中排除路径

ep1           从名称中排除基本目录

ep2           展开为完整路径

ep3           扩展路径为包含盘符的完全路径

f             刷新文件

hp[密码]      同时加密文件数据和文件头

id[c,d,p,q]   禁用信息显示

ieml[地址]    邮寄压缩文件

ierr          发送所有消息到标准错误设备

ilog[名称]    把错误写到日志文件 (仅注册版)

inul          禁用所有消息

ioff          完成一个 *** 作后关闭 PC 电源

isnd          启用声音

k             锁定压缩文件

kb            保留损坏的已解压文件

m<0..5>       设置压缩级别(0-存储...3-默认...5-最大)

mc<参数>      设置高级压缩参数

md<大小>      以KB为单位的字典大小(64,128,256,512,1024,2048,4096 or A-G)

ms[extext]   指定存储的文件类型

mt<线程>      设置线程数

n<文件>       仅包括指定文件

n@            从标准输入设备读取要包括的文件名称

n@<列表>      在指定列表文件包括文件

o+            覆盖已存在文件

o-            不覆盖已存在文件

oc            设置 NTFS 压缩属性

or            自动重命名文件

os            保存 NTFS 流

ow            保存或恢复文件所有权和组

[密码]        设置密码

p-            不询问密码

r             包含子目录

r0            仅包含通配符名称的子目录

ri

[:]   设置优先级 (0-默认,1-最小..15-最大) 和休眠时间(毫秒)

rr[N]         添加数据恢复记录

rv[N]         创建恢复卷

s[,v[-],e] 创建固实压缩文件

s-            禁用固实压缩文件

sc[obj] 指定字符集

sfx[名称]     创建自解压文件

si[名称]      从标准输入设备读取数据

sl<大小>      处理小于指定大小的文件

sm<大小>      处理大于指定大小的文件

t             压缩后测试文件

ta<日期>      添加日期 <日期>后修改的文件,日期格式 YYYYMMDDHHMMSS

tb<日期>      添加日期 <日期>前修改的文件,日期格式 YYYYMMDDHHMMSS

tk            保留原始压缩文件时间

tl            设置压缩文件时间为最新时间

tn<时间>      添加 <时间>以后的文件

to<时间>      添加 <时间>以前的文件

ts[N] 保存或恢复文件时间(修改,创建,访问)

u             更新文件

v             自动检测创建卷的大小或者列出所有的卷

v<大小>[k,b] 创建卷大小=<大小>*1000 [*1024, *1]

vd            创建卷前清除磁盘内容

ver[n]        文件版本控制

vn            使用旧样式卷命名方案

vp            每卷之前暂停

w<路径>       指定工作目录

x<文件>       排除指定的文件

x@            从标准输入设备读取要排除的文件名

x@<列表>      排除指定列表文件中的文件

y             假设对全部询问都回答是

z[文件]       从文件读取压缩文件注释

举个例子:    建立一个批处理BackFav.bat(名字可以随便起)文件内容:

REM 这个批处理文件是用来自动备份我的收藏夹

REM WinRAR <命令>-<开关1>-<开关N><压缩文件><文件><@列表文件><解压路径\>

"D:\Program Files\WinRAR\WinRAR.exe" a -as -r -sfx -zsfxpara.txt -EP1 "d:\my documents\Favorites.exe" "%USERPROFILE%\Favorites"

===================================================

参数说明:

a:                   添加指定的文件(源目录,这里是"%USERPROFILE%\Favorites")和文件夹到压缩文件(目标文件,这里是"d:\my documents\Favorites.exe")中。

-as:                这是一个开关,指添加方式是“同步压缩文件内容”

-r:                  表示“包含子文件夹”

-sfx:               表示建立的是一个自解压文件

-zsfxpara.txt: 从文件sfxpara.txt读取压缩文件注释,这注释有什么用后面解释

-ep1:             表示不把路径%USERPROFILE%保存在压缩文件中

2. 注释文件的作用

建立压缩文件的时候不光要考虑压缩那些文件,还要考虑怎么解压缩。通过注释文件可以向压缩包传递许多有用的信息。

sfxpara.txt内容:

PATH=%USERPROFILE%\

Silent=1

例:

"C:\Program Files\WinRAR\Rar.exe" a "g:\aa.rar" "f:\11.txt"     压缩"f:\11.txt"到G盘,命名为“aa”

"C:\Program Files\WinRAR\Rar.exe" d "g:\aa.rar" "22.bat"        删除压缩包"g:\aa.rar"中的"22.bat" 文件

"C:\Program Files\WinRAR\Rar.exe" d "g:\aa.rar" "ABC"           删除压缩包"g:\aa.rar"中的"ABC" 文件夹


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/6051344.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-13
下一篇 2023-03-13

发表评论

登录后才能评论

评论列表(0条)

保存