Windows?批處理的應(yīng)用小結(jié)(ProtoBuf編譯自動化工具)
Windows批處理的應(yīng)用(ProtoBuf編譯自動化工具)
批處理概述
批處理,顧名思義就是可以批量處理,也稱為批處理腳本,英譯名為BATCH,后綴名.bat也是由此而來。他的構(gòu)成沒有固定的格式,只要遵循:每一行可視為一條命令,每條命令里可以含多條子命令,從第一行開始執(zhí)行,直至最后一行結(jié)束,它運(yùn)行的平臺是DOS即可。批處理的特點:使用方便、靈活,功能強(qiáng)大,自動化程度高。
實例(ProtoBuf編譯自動化工具)
下面使用構(gòu)建一個將ProtoBuf源文件生成C++源文件以及C#源文件的自動化批處理工具為例。
首先準(zhǔn)備生成好的proto.exe(ProtoBuf編譯器,運(yùn)行ProtoBuf源碼即可生成)以及ProtoBuf源文件,如下:
緊接著,我們創(chuàng)建批處理文件(bat文件),如下:
TIPS:上述三個文件放同一個路徑下即可運(yùn)行生成。
定義內(nèi)容如下:
rem命令是批處理文件中的注釋,相當(dāng)于C++中的//。
@echo off rem echo off:關(guān)閉回顯,批處理中的每一條命令都不會顯示在顯示器上。而echo off本身也是一條命令,如果不想讓其顯示,只需在前方加@符號即可。 SET CURRENT_PATH=%cd% rem 注意,SET等號左右兩邊不能有空格 rem 將等號右側(cè)的值賦值給等號左側(cè)的變量; rem 使用%包裹的字符(字符串)是一個變量; rem %cd%:點擊的bat腳本的工作路徑(最開始點擊的bat腳本所在的路徑)。 SET PROTOC_PATH=%CURRENT_PATH% SET PATH=%PATH%;%PROTOC_PATH% rem 將PROTOC_PATH所指向的路徑添加到系統(tǒng)PATH環(huán)境變量中去(并不會永久改變環(huán)境變量,是臨時性的) set target_path=. echo 編譯: player.proto cpp && "%PROTOC_PATH%\protoc.exe" --cpp_out="%target_path%/" --proto_path "./" player.proto rem echo + message,用來在DOS界面打印消息,類似于C語言的printf。 rem &&符號在第三部分:常用特殊符號中有介紹,不再敘述。 rem 由于一開始開啟@echo off,而&&后面部分為一條命令(將ProtoBuf源文件編譯為C++源文件,包括.h、.cc文件),則在DOS界面中是不會顯示的,即@echo off的屏幕效果不會因為&&而失效。 echo 編譯: player.proto csharp && "%PROTOC_PATH%\protoc.exe" --csharp_out="%target_path%/" --proto_path "./" player.proto rem 原理同上。 echo 操作完成,按任意鍵退出 echo 完成時間 %date:~0,10% %time:~0,8% rem %date:~0,10%是批處理中用于取日期的命令。~0,10%類似于字符串截取。 rem %time:~0,8%是批處理中用于取時間的命令。~0,8%類似于字符串截取。 pause>nul&exit rem pause是批處理中按任意鍵退出,但是由于會顯示一行中文,故使用>nul,用于屏幕標(biāo)準(zhǔn)輸出在屏幕上的顯示,即“按任意鍵退出”該行中文不會顯示在DOS界面中。&符號的作用在第三部分:常用特殊符號已經(jīng)介紹。 rem exit命名用于退出DOS控制臺,當(dāng)我們按任意鍵退出時,執(zhí)行exit。
效果演示
常用特殊符號
命令 | 含義 |
---|---|
@ | 命令行回顯屏蔽符 |
% | 批處理變量引導(dǎo)符 |
> >> | 輸出重定向 > 傳遞并覆蓋 >> 傳遞并在末尾追加 |
< >& <& | 管道命令,一般不常用 |
| | 命令管道符 |
^ | 轉(zhuǎn)義字符,將特殊符號 < 、 > 、 & 的特殊功能去掉 |
& && || | 組合命令,就是把多個命令組合起來當(dāng)一個命令執(zhí)行。 & 命令是順序執(zhí)行的,從前往后執(zhí)行 && 可以同時執(zhí)行多條命令,當(dāng)碰到執(zhí)行出錯的命令后,將不再執(zhí)行后面的命令 || 可以同時執(zhí)行多條命令,當(dāng)?shù)谝粋€命令執(zhí)行失敗后,才執(zhí)行第二條命令,當(dāng)碰到執(zhí)行正確的命令后將不再執(zhí)行后面的命令 |
“ ” | 字符串界定符號 |
, | 相當(dāng)于空格 |
; | 當(dāng)命令相同時,可以將不同的目標(biāo)用 ; 來隔離,但執(zhí)行效果不變,如果執(zhí)行過程中發(fā)生錯誤,則只返回錯誤報告,但程序仍會執(zhí)行 |
( ) | 小括號在批處理編程中有特殊的作用,左右括號必須成對使用,括號中可以包括多行命令,這些命令將被看成一個整體,視為一條命令行 |
! | 在變量延遲問題中,用來表示變量,即 %var% 應(yīng)該表示為 !var! |
批處理(bat) %cd% 與 %~dp0的區(qū)別
- %cd%是指:點擊的bat腳本的工作路徑(最開始點擊的bat腳本所在的路徑)。
- %~dp0是指:當(dāng)前執(zhí)行的bat腳本所在目錄(隨著執(zhí)行腳本的變化而變化)。
TIPS:%~dp0可以在A.bat的命令行中運(yùn)行B.bat時,獲得B.bat所在的路徑。
批處理(bat)將路徑添加到PATH環(huán)境變量中的兩種方式
環(huán)境變量:通過在環(huán)境變量里面加入所需軟件的安裝路徑(exe文件所在路徑),當(dāng)我們想運(yùn)行某一軟件時雙擊其快捷方式或者在DOS界面輸入軟件名稱(命令),此時,計算機(jī)除了在其當(dāng)前目錄下尋找該軟件的.exe文件之外,還在環(huán)境變量中搜索該軟件的執(zhí)行路徑,找到,則運(yùn)行。
永久添加
TIPS:該方式需要有管理員權(quán)限。
@echo off rem 設(shè)置要永久加入到path環(huán)境變量中的路徑 set My_PATH=D:AppFolder set PATH=%PATH%;%My_PATH% reg add "HKLMSYSTEMCurrentControlSetControlSession ManagerEnvironment" /v "Path" /t REG_EXPAND_SZ /d "%PATH%" /f exit
臨時添加
@echo off rem 設(shè)置要臨時加入到PATH環(huán)境變量中的路徑 set My_PATH=D:AppFolder set PATH=%PATH%;%My_PATH% rem 其它腳本命令todo pause
到此這篇關(guān)于Windows 批處理的應(yīng)用(ProtoBuf編譯自動化工具)的文章就介紹到這了,更多相關(guān)Windows 批處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
實現(xiàn)自動上傳文件到ftp服務(wù)器的BAT腳本分享
這篇文章主要介紹了實現(xiàn)自動上傳文件到ftp服務(wù)器的BAT腳本分享,使用本文代碼保存到bat文件中雙擊即可,需要的朋友可以參考下2014-09-09