是利用winrar自带的一个命令行工具rar.exe来完成的
这个程序的命令行参数很丰富
直接在命令行输入"c:\program files\winrar\rar.exe"(假如你的rar是装在默认位置的话)
下面的批处理程序以一堆冒号为分界,分为三段
第一段,根据.rar文件的文件关联找到rar的安装目录
这里用到了ftype命令
在命令行中输入ftype就可以查看所有的文件关联信息
这里我们只关注Winrar
所以辅助了一个通道命令|find找到winrar所在的行
然后调用了一个叫做:getrarpath的子程序
这个子程序在第三段做了定义
它将path变量暂时设成了winrar的安装目录
path变量有什么用呢?当你输入一个程序名,没有路径时,系统会在当前路径和path指定的文件夹下寻找
这样我们输入rar.exe,系统就会自动在当前目录和C:\program files\winrar\下寻找rar.exe。这么写纯粹是为了用起来方便
第二段只有一句话
用到了rar.exe的e参数,即解压。可以指定路径,如
rar e d:\bc\ed.rar d:\test\
不指定的话则解压到当前目录
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
setlocal
for /f "delims== tokens=1,*" %%a in ('ftype^|find /i "winrar="') do call:getrarpath %%b
if not exist "%path%\rar.exe" echo 找不到WinRAR&exit /b
::根据.rar的文件关联查找rar所在的路径
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
rar e d:\bc\ed.rar
::解压d:\bc\ed.rar到当前目录。当前目录指的是cmd的工作目录
exit /b
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:getrarpath
::将工作路径path设为winrar所在目录
path %~dp1
exit /b
2. 批处理解压所有子文件夹内的压缩包
在需要解压的路径下进入cmd,输入下面这一段
for/r%ain(*.rar,*.zip)do"%ProgramFiles%WinRARWinRar.exe"x"%~a""%~dpa"-ibck
3. 如何使用bat批处理通过rar命令压缩/解压缩目录
1、首先,右键单击压缩器图标并选择“打开属性”。
4. 批处理 解压文件夹内所有压缩包至每个单独的文件夹
如果使用WINRAR进行解压,其本身就自带此功能,在资源管理器中选中所有压缩文档,右击出现右键菜单,再选择“解压每个包到单独文件”即可。
如果一定要批处理命令,则可查看WINRAR的帮助文件,里边会有命令行格式的注解。
如果文件在不同文件夹中,可先搜索该上级文件夹下的所有“*.RAR”文件,再按上述方法操作。
5. 关于bat中使用rar/zip压缩命令
压缩参数
用法: 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[ext;ext] 指定存储的文件类型
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" 文件夹
6. 如何使用bat批量解压不同密码加密的压缩包
@echooff&cd/d"%~dp0"
set"title=批量解压压缩包By依梦琴瑶WinRAR版"
title%title%
::设置密码库文件
setpw_list=C:password.txt
::设置压缩包目录
setcompr_dir=C:yuan
::设置压缩文件格式
setExt=rar,zip
::设置文件解压存放目录
setsav_dir=D: arget
::如果您电脑上的WinRAR是绿色,非安装版,请设置此变量
::变量值就是WinRAR.exe的完整路径,否则请留空。
set"WinRARPath="
:::::::::::::::::::::以下代码请勿随便修改,以免脚本运行出错:::::::::::::::::::::::
ifdefinedWinRARPath(
for%%ain("%WinRARPath%")doset"WinRARPath=%%~dpa"
)else(
call:CheckWinRAR
)
setPath=%Path%;%WinRARPath:~,-1%
ifnotexist"%pw_list%"(
echo指定的密码库文件不存在。
gotoEnd
)
ifnotexist"%compr_dir%"(
echo指定的压缩包目录不存在。
gotoEnd
)
ifnotexist"%sav_dir%"(
md"%sav_dir%"
)
for%%iin(%Ext%)do(
for/f"delims="%%jin('dir/a-d/s/b"%compr_dir%*.%%~i"2^>nul')do(
call:Decompress"%%~j"
)
)
title%title%--共成功解压!OkNum!个压缩包
echo,&echo脚本执行完成,请按任意键退出。
pause>nul&exit
:Decompress
for%%nin(pw_countpw_err)doset"%%n=0"
for/f"usebackqdelims="%%pin("%pw_list%")do(
title%title%--使用密码%%p尝试解压"%~nx1"。。。
set/apw_count+=1
if/inot"%~x1"==".rar"(
seterr=1
)else(
seterr=3
)
WinRARt-p%%p"%~s1"-ibck-inul>nul2>nul
if!errorlevel!gtr0(
if!errorlevel!equ!err!(
set/apw_err+=1
)else(
if!errorlevel!equ11(
set/apw_err+=1
)else(
echo解压文件∶"%~nx1"发生错误,错误等级∶!errorlevel!
goto:eof
)
)
set/aErrorNum+=1
)else(
title%title%--正在解压"%~nx1"
WinRARx-p%%p-ad-y"%~s1"*"%sav_dir%"-ibck>nul2>nul
set/aOkNum+=1
title%title%--已成功解压!OkNum!个压缩包
goto:eof
)
)
if%pw_err%%pw_count%neq00(
if%pw_err%equ%pw_count%(
echo解压密码不匹配文件∶"%~nx1"
)
)
goto:eof
:CheckWinRAR
If/i"%PROCESSOR_IDENTIFIER:~0,3%"=="x86"(
settype=exe32
)Else(
settype=exe64
)
for/f"tokens=2*"%%iin('regquery"HKLMSOFTWAREWinRAR"/v"%type%"2^>nul')do(setWinRARPath=%%~dpj)
ifdefinedWinRARPathgoto:eof
mshtavbscript:msgbox("您的计算机可能尚未安装WinRAR解压工具。",64,"错误")(window.close)
exit
脚本保存为ANSI编码
::非主代码,如果愿意,可友情执行。
@echooff&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
7. 如何写一个压缩文件的批处理或小程序
不清楚你的实际文件/情况,仅以问题中的样例说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起双击运行
<#:
cls&echooff&cd/d"%~dp0"&modeconlines=5000
rem将当前目录里的多个.vcf文件按照不同数量分组进行压缩打包
set#=Anyquestion&set_=WX&set$=Q&set/az=0x53b7e0b4
title%#%+%$%%$%/%_%%z%
set"exefile=C:ProgramFilesWinRARWinRAR.exe"
ifnotexist"%exefile%"(echo;"%exefile%"PathErrororNotInstalled&pause&exit)
set"self=%~f0"
powershell-NoProfile-ExecutionPolicybypass"Get-Content-literal'%~f0'|Out-String|Invoke-Expression"
echo;%#%+%$%%$%/%_%%z%
pause
exit
#>
$ext=@(".vcf");
$relation=@"
小红=20
小兰=30
小刚=33
小李=22
"@;
$codes=@'
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Runtime.InteropServices;
publicstaticclassExpDir
{
[DllImport("Shlwapi.dll",CharSet=CharSet.Unicode)]
(stringp1,stringp2);
publicstaticstring[]Sort(string[]f)
{
Array.Sort(f,StrCmpLogicalW);
returnf;
}
}
'@;
Add-Type-TypeDefinition$codes;
$self=get-item-liter$env:self-force;
$current=$self.Directory;
$arr=$relation.trim()-split'[ ]+';
$files=@(dir-literal$current.FullName|?{($ext-contains$_.Extension)-and($_-is[System.IO.FileInfo])}|%{$_.Name});
if($files.length-ge1){
$brr=[ExpDir]::Sort($files);$n=0;
for($i=0;$i-lt$arr.length;$i++){
if(-not[string]::IsNullOrWhiteSpace($arr[$i])){
$crr=$arr[$i].split('=',2);$zipname=$crr[0]+'.zip';
for($j=1;$j-le([int]$crr[1]);$j++){
if($n-lt$brr.count){
write-host$brr[$n];$n++;
}
}
write-host("==>"+$zipname+"`r`n")-ForegroundColoryellow;
}
}
}
8. 7-zip如何利用批处理压缩及解压缩文件夹
WINDOWS操作不行吗。选中 你要打包的目录,鼠标右键弹出菜单选择压缩包文件名就行了
盘符路径也可以选
7-ZIP,WIN ZIP,WIN RAR这些都是WINDOWS界面软件了,
用命令行压缩文件都是古老的DOS时期ARJ之类的软件采用的
9. 如何用bat解压缩rar或zip
实现的方法和详细的操作步骤如下:
1、第一步,右键单击压缩文件,然后选择打开的“属性”选项,如下图所示,然后进入下一步。