需求:因MSSQL2005備份無壓縮功能,爲節約空間對備份做壓縮。
解決思路:查找備份目錄下所有.bak備份文件壓縮並刪除原文件
命令如下:
FOR /R "D:\_SQL_DATA_BACK" %f in (*.bak) DO "C:\Program Files\WinRAR\WinRAR.exe" a -tk -ep1 -m5 -df -y "%f.rar" "%f"
bat腳本如下:
@echo off FOR /R "D:\_SQL_DATA_BACK" %%f in (*.bak) DO "C:\Program Files\WinRAR\WinRAR.exe" a -tk -ep1 -m5 -df -y "%%f.rar" "%%f" pause
注:%%是在批處理文件中變量符號,如果在CMD執行的話就應該是一個%。批處理文件在被解析的時候其中一個%被過濾掉,所以才用兩個。
for循環使用方法:
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
for /R [路徑] %variable傳參(bat腳本使用%%f,命令%f) in (set) do 命令[command-parameters]
winrar參數解釋: a 添加文件到壓縮文件 tk 保留原始壓縮文件時間 ep1 從名稱中排除基本目錄 m<0..5> 設置壓縮級別(0-存儲3-默認5-最大) df 壓縮後刪除文件 y 假設對全部詢問都回答是