目的:爲了定時備份多個svn倉庫數據,使用批處理程序進行備份並Bandizip進行壓縮保存到指定位置,操做完成後彈出成功提示。算法
爲了完成以上目標,須要瞭解如下幾個方面:ide
打開回顯或關閉請求回顯功能,或顯示消息。若是沒有任何參數,echo命令將顯示當前回顯設置。svn
語法
echo [{on|off}] [message]
測試示例:
@echo off / echo hello world
ui
註釋命令,相似於在C語言中的/--------/,它並不會被執行,只是起一個註釋的做用,只有在編輯批處理時纔會被看到,主要用於方便修改。
:: 也具備rem的功能,但::和rem仍是有區別的。當關閉回顯時,rem和::後的內容都不會顯示;當打開回顯時,rem後的內容會顯示出來,然而::後的內容仍然不會顯示。spa
語法
Rem [註釋內容]
命令行示例:
Rem 你好。
code
暫停命令。運行 Pause 命令時,將顯示下面的消息:
Press any key to continue. . .(或:請按任意鍵繼續. . .)orm
示例:
@echo off
:begin
copy G:*.* d:\back
echo 請插入另外一張光盤...
pause
goto begin
blog
調用外部程序,全部的DOS命令和命令行程序均可以由start命令來調用。如:startcalc.exe便可打開Windows的計算器。
經常使用參數:
MIN 開始時窗口最小化
SEPARATE 在分開的空間內開始 16 位 Windows 程序
HIGH 在 HIGH 優先級類別開始應用程序
REALTIME 在 REALTIME 優先級類別開始應用程序
WAIT 啓動應用程序並等候它結束
parameters 這些爲傳送到命令/程序的參數
執行的應用程序是 32-位 GUI 應用程序時,CMD.EXE 不等應用程序終止就返回命令提示。若是在命令腳本內執行,該新行爲則不會發生。
顯示、設置或刪除變量。
例如:
set aa=abcd
echo %aa%
pause
運行這段命令就會顯示"abcd"
for語句能夠實現相似於C語言裏面的循環結構,固然for語句的功能要更強大一點,經過不一樣的開關能夠實現更多的功能。for語句有多個開關,不一樣開關將會實現不一樣的功能。
無開關
無開關的for語句可以對設定的範圍內進行循環,是最基本的for循環語句。其命令格式爲:FOR %%variable IN (set) DO command
其中,%%variable是批處理程序裏面的書寫格式,在DOS中書寫爲%variable,即只有一個百分號(%);set就是須要咱們設定的循環範圍,相似於C語言裏面的循環變量;do後面的command就是循環所執行的命令,即循環體。
無開關for語句舉例:@echo off
for %%i in (a,"b c",d) do echo %%i
pause>nul
開關/L
含開關/L的for語句,能夠根據set裏面的設置進行循環,從而實現對循環次數的直接控制。其命令格式爲:
FOR /L %%variable IN (start,step,end) DO command
其中,start爲開始計數的初始值,step爲每次遞增的值,end爲結束值。當end小於start時,step須要設置爲負數。
含開關/L的for語句舉例(建立5個文件夾):@echo off
for /l %%i in (1,2,10) do md %%i
pause
將文件系統的內容轉儲到標準輸出。
概要
svnadmin dump REPOS_PATH [-r LOWER[:UPPER]] [--incremental]描述
使用「dumpfile」可移植格式將文件系統的內容轉儲到標準輸出,將反饋發送到標準錯誤,導出的修訂版本從LOWER到UPPER。若是沒有提供修訂版本,會導出全部的修訂版本樹,若是隻提供LOWER,導出一個修訂版本樹。
若是Subversion的轉儲文件很大,你可使用--deltas來減少svnadmin建立的導出文件的大小。經過這個選項,就不會寫出每次修訂版本的內容,svnadmin dump只會寫出版本之間的區別。然而,建立增量導出文件的壞處―對CPU的要求更高,svndumpfilter不能夠對這個文件操做,並且非增量的轉儲文件能夠更好的壓縮。選項
--revision (-r)
--incremental
--quiet
--deltas例子
- 轉儲整個版本庫:
svnadmin dump /usr/local/svn/repos SVN-fs-dump-format-version: 1 Revision-number: 0 * Dumped revision 0. Prop-content-length: 56 Content-length: 56 …
- 從版本庫增量轉儲一個單獨的事務:
svnadmin dump /usr/local/svn/repos -r 21 --incremental * Dumped revision 21. SVN-fs-dump-format-version: 1 Revision-number: 21 Prop-content-length: 101 Content-length: 101 …
# Bandizip.exe <archive>
# Bandizip.exe <command> [<switches>...] <archive> [<files>...] [<path_to_extract>]
# Bandizip.exe <bcommand> [<switches>...] [<files>...]
執行在設置中指定的操做。 一般只打開壓縮包。
a : 添加文件到壓縮包
x : 用完整路徑解壓文件
t : 測試壓縮包完整性
d : 刪除壓縮包中文件
c : 建立新檔案(或覆蓋現有文件)
cd: 顯示「新建壓縮包」對話框
bc:要壓縮的每一個文件/文件夾名稱。 若存在相同的壓縮包名,則以「文件名(2)」格式建立壓縮包。若未指定目標文件夾,則默認目標文件夾爲原始文件或文件夾所在的路徑。
bx: 將每一個壓縮包分別解壓到目標文件夾中。 若未指定目標文件夾,則默認目標文件夾爲每一個壓縮文件所在的路徑。
bt: 測試壓縮包
- 中止開關掃描
-l:<0...9> 設置壓縮級別(0:存儲,5:默認,9:最大)
-r- 禁用遞歸(默認)
-r 啓用遞歸子目錄
-aoa 無需提示覆蓋所有現有文件
-aos 跳過已有文件的解壓
-aou 自動重命名解壓的文件
(例如,name.txt將被重命名爲name (2).txt)
-sfx:[{name}] 建立SFX壓縮包
-zopfli 使用Zopfli做爲默認壓縮算法
-p:{password} 設置密碼
-o:{dir} 指定目標文件夾
-y 全選「是」
-fmt:{fmt} 指定壓縮格式
(zip, zipx, exe, tar, tgz, lzh, iso, 7z, gz, xz)
-v:{size} 指定分卷大小 (-v:1000000 -v:1440k -v:100MB ...)
-email 壓縮並郵件發送
-target:dlg 顯示「目標路徑選擇」對話框
-target:auto 智能解壓到目標路徑
-target:name 按壓縮包名稱解壓到目標路徑中文件夾下
1. 打開壓縮包
Bandizip.exe sample.zip
2. 新建壓縮包(覆蓋已有文件)
Bandizip.exe c c:\sample.zip c:\src\
Bandizip.exe c c:\sample.zip c:\src1\ c:\src2\
3. 添加文件到壓縮包
Bandizip.exe a c:\sample.zip c:\src\sample.txt
Bandizip.exe a c:\sample.zip c:\src\sample1.txt c:\src\sample2.txt
Bandizip.exe a c:\sample.zip c:\src*.txt c:\src*.jpg
4. 刪除壓縮包中文件
Bandizip.exe d c:\sample.zip sample.txt
Bandizip.exe d c:\sample.zip *.txt
5. 將壓縮包解壓到目標路徑
Bandizip.exe x -o:c:\dest\ c:\sample.zip
6. 添加文件到壓縮包,並設置密碼爲Passw0rd,無提示覆蓋所有已有文件並關閉對話框
Bandizip.exe a -y -p:Passw0rd test.zip c:\src d:\src
1 @echo off 2 ::指定到Svn倉庫目錄 3 E: 4 set work_path=D:\SvnRepertory 5 set back_path=D:\SvnBack 6 set zip_path=D:\SvnBackPackage 7 cd %work_path% 8 9 ::使用for循環讀取倉庫目錄下的全部倉庫文件夾名稱,並進行循環備份 10 for /d %%s in (*.*) do ( 11 echo %work_path%\%%s 12 svnadmin dump %work_path%\%%s > %back_path%\%%s.bak 13 ) 14 15 ::根據當前時間建立壓縮包名稱 16 set "year=%date:~0,4%" 17 set "month=%date:~5,2%" 18 set "day=%date:~8,2%" 19 set "hour_ten=%time:~0,1%" 20 set "hour_one=%time:~1,1%" 21 set "minute=%time:~3,2%" 22 set "second=%time:~6,2%" 23 if "%hour_ten%" == " " ( 24 set zipfile=%year%%month%%day%0%hour_one%%minute%%second%.zip 25 ) else ( 26 set zipfile=%year%%month%%day%%hour_ten%%hour_one%%minute%%second%.zip 27 ) 28 29 ::使用Bandizip命令進行壓縮,在成功後彈窗提示操做完成,並打開備份目錄 30 Bandizip.exe c %zip_path%\%zipfile% %back_path% 31 mshta vbscript:msgbox("備份並壓縮成功,快去看看吧!",64,"提示")(window.close) 32 start %zip_path% 33 pause 34 exit
注意:若是彈出提示爲亂碼,則須要將文件另存爲ANSI格式