是利用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、第一步,右鍵單擊壓縮文件,然後選擇打開的「屬性」選項,如下圖所示,然後進入下一步。