壓縮批處理
① 如何寫一個壓縮文件的批處理或小程序
不清楚你的實際文件/情況,僅以問題中的樣例說明及猜測為據;以下代碼復制粘貼到記事本,另存為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;
}
}
}
如果使用WINRAR進行解壓,其本身就自帶此功能,在資源管理器中選中所有壓縮文檔,右擊出現右鍵菜單,再選擇「解壓每個包到單獨文件」即可。
如果一定要批處理命令,則可查看WINRAR的幫助文件,里邊會有命令行格式的註解。
如果文件在不同文件夾中,可先搜索該上級文件夾下的所有「*.RAR」文件,再按上述方法操作。
③ 怎麼用批處理解壓壓縮包到當前文件夾中
是利用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
④ 如何用批處理將一個文件壓縮並加密碼
用批處理將一個文件壓縮並加密碼的方法如下:
1、創建一個txt格式的文檔,然後打開。
2、將以下代碼復制到上面。
cls
@ECHO OFF
title 加密程序
if EXIST "上了鎖的文件夾" goto UNLOCK
if NOT EXIST 加密文件 goto MDLOCKER
:CONFIRM
echo 您確定要鎖定文件夾嗎?(Y/N)『Y=是-N=不』
set/p "cho=(more than)"
if %cho%==Y goto LOCK
if %cho%==y goto LOCK
if %cho%==n goto END
if %cho%==N goto END
echo 選擇無效.
goto CONFIRM
:LOCK
ren 加密文件 "上了鎖的文件夾"
attrib +h +s "上了鎖的文件夾"
echo 文件夾已鎖定
goto End
:UNLOCK
echo 請輸入密碼打開文件夾
set/p "pass=(more than)"
if NOT %pass%== (此處輸入密碼) goto FAIL
attrib -h -s "上了鎖的文件夾"
ren "上了鎖的文件夾" 加密文件
echo 文件夾解鎖成功
goto End
:FAIL
echo 密碼無效
goto end
:MDLOCKER
md 加密文件
echo 加密文件 成功創建
goto End
:End
3、這時候要設密碼了,找到代碼中 (此處輸入密碼) ,連擴號一起改成自己的密碼。再點左上角文件,然後在點另存為,把文件名的後綴名改成 .bat 前面的自己設,再將保存類型改成所有文件。
4、運行bat文件(批處理文件),然後這時候會冒出個叫「加密文件」的文件夾,現在就可以把私密文件放入這個文件夾里了,然後再次運行這個批處理文件,見圖2,點Y,然後按Enter回車鍵運行,然後文件不見了。
5、再次運行批處理文件,輸入密碼,然後文件夾又回來了。又可以再次使用或修改加密文件里的私密文件了。
6、這樣就加密成功了,要重新隱藏(鎖定)的話,就再次執行上面的步驟。