bat/cmd 均是window操做系統下,二者都是經過文本方式編輯,建立以及查看。均是命令的集合。bat與cmd有什麼區別呢 ?正則表達式
1) cmd文件容許使用的命令比bat多,可是隻有在windows2000以上的系統中才能運行編程
2) bat 文件容許使用的命令比cmd少,可是沒有系統上的限制windows
3) cmd文件 「Windows NT命令腳本」,bat 文件「MS DOS批處理文件」數組
4) 文件擴展名不一樣,cmd文件是".cmd",bat文件擴展名是「.bat」服務器
批處理腳本的一些功能yii
for
, if
, while
和 switch
更好的自動化和腳本。批處理腳本的一些用途函數
命令1:echospa
命令2:md/mkdir操作系統
獲取當前路徑.net
@echo off
echo current disk: %~d0
echo current disk and path: %~dp0
echo current file: %~f0
echo short current directry path: %~sdp0
echo %cd%
pause
判斷變量是否爲空
不少時候,咱們須要檢查某個變量的值是否爲空,以便作後續處理。
對於這個問題,不少人會堅決果斷地選擇 if "%str%"=="" …… 的句式,在早期的批處理中,還能夠看到這樣的語句:if [%str%]==[],有人把這兩種寫法稱爲「防空字符」。
但是,這樣作真的能在各類複雜的狀況下判斷某個變量的值是否爲空嗎?
答案是否認的。
先來看 if [%str%]==[],當%str%爲空值的時候,它無疑能成功地捕獲到這一狀況,可是,若是%str%中含有特殊字符,好比>、&之類,這條語句就會報錯。
爲了兼容這幾個特殊字符,人們絞盡腦汁,想到了 if "%str%"=="" 語句,因而,>、&、|之類的特殊字符也能順利經過驗證了,這是防空字符的一大進步。
可是,這條語句也不是完美的,由於有一個特殊字符它徹底沒辦法處理!
這個特殊字符是什麼呢?
它就是雙引號"自己!
咱們執行一下以下代碼:
CMD.EXE報錯了:命令語法錯誤。
原來,上面這條if語句執行的是 if """=="" ……,引號起到分組字符串的做用,而引號對是就近匹配的:第一個引號和第二個引號配成一對,第三個引號和第四個引號配成一對,第五個引號和第六個引號配成一對……,這條if語句最終的執行的是 if "==……,可是引號始終要做爲分組字符來使用的,而單個的引號沒有找到下一個可匹配的引號,因此就出現了語法錯誤。
當把 %str% 的值改成兩個引號的時候,上面這段代碼的執行結果竟然顯示爲no,想一想這是爲何。
if "%str%"==""……能兼容大部分特殊字符,可是恰恰不能兼容引號自己,那麼,判斷某個變量的值是否爲空,是否是就沒有更好的辦法了呢?
答案是確定的,那就是:用 if defined str 語句來判斷變量值是否爲空。
請執行如下代碼:
參考連接:
https://my.oschina.net/superkangning/blog/528881
https://www.yiibai.com/batch_script/
https://www.zybuluo.com/yangfch3/note/338252