【bat/cmd】腳本開發

0. 開篇

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

  • 能夠讀取用戶的輸入,以便進一步處理。
  • 有控制結構:forifwhile 和 switch更好的自動化和腳本。
  • 支持高級功能,如函數和數組。
  • 支持正則表達式。
  • 能夠包含其餘編程代碼,如Perl。

批處理腳本的一些用途函數

  • 爲不一樣的目的設置服務器。
  • 自動管理活動和日誌,如刪除不須要的文件或日誌文件。
  • 自動將應用程序從一個環境部署到另外一個環境。
  • 當即在各類機器上安裝程序。

 

1. 基礎批處理命令

命令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%"=="" 語句,因而,>、&、|之類的特殊字符也能順利經過驗證了,這是防空字符的一大進步。
  可是,這條語句也不是完美的,由於有一個特殊字符它徹底沒辦法處理!
  這個特殊字符是什麼呢?
  它就是雙引號"自己!
  咱們執行一下以下代碼:

  1. @echo off
  2. set str="
  3. if "%str%"=="" (echo yes) else echo no
  4. pause

  CMD.EXE報錯了:命令語法錯誤。
  原來,上面這條if語句執行的是 if """=="" ……,引號起到分組字符串的做用,而引號對是就近匹配的:第一個引號和第二個引號配成一對,第三個引號和第四個引號配成一對,第五個引號和第六個引號配成一對……,這條if語句最終的執行的是 if "==……,可是引號始終要做爲分組字符來使用的,而單個的引號沒有找到下一個可匹配的引號,因此就出現了語法錯誤。
  當把 %str% 的值改成兩個引號的時候,上面這段代碼的執行結果竟然顯示爲no,想一想這是爲何。
  if "%str%"==""……能兼容大部分特殊字符,可是恰恰不能兼容引號自己,那麼,判斷某個變量的值是否爲空,是否是就沒有更好的辦法了呢?
  答案是確定的,那就是:用 if defined str 語句來判斷變量值是否爲空。
  請執行如下代碼:

    1. @echo off
    2. :Main
    3. cls
    4. set str=
    5. set /p "str=請輸入任意字符,或直接回車:"
    6. if defined str (
    7.     echo 變量 str 的值不爲空
    8. ) else echo 變量 str 爲空值
    9. pause
    10. goto Main

 

參考連接:

https://my.oschina.net/superkangning/blog/528881

https://www.yiibai.com/batch_script/

https://www.zybuluo.com/yangfch3/note/338252

相關文章
相關標籤/搜索