CMD命令行高級教程-常用批處理內部命令(二)

前期回顧:  CMD命令行高級教程-常用批處理內部命令(一)

第一章 批處理基礎

第一節 常用批處理內部命令

============================

8、GOTO 和 :

GOTO 會點編程的朋友就會知道這是跳轉的意思。

在批處理中允許以“ : XXX ”來構建一個標號,然後用 GOTO XXX 跳轉到標號 : XXX 處,然後執行標號後的命令。

例:

檢查是否提供了至少一個參數

  • %1 - 這是批處理腳本中第一個參數的佔位符。如果你在運行批處理文件時輸入了 my_script.bat hello world,那麼 %1 就代表 hello。

  • {%1} - 用花括號 {} 將參數括起來是一種容錯技巧。如果 %1 爲空(即用戶沒提供參數),這條語句就變成了 if {} = = { } ...,這是一個有效的比較。如果直接寫 if %1== ... 而 %1 又爲空,腳本會因語法錯誤而崩潰。

  • {} - 這是用來與 {%1} 進行比較的空值。

  • goto noparms - 如果條件爲真(即第一個參數爲空),則跳轉到腳本中名爲 :noparms 的標籤段執行。通常,:noparms 部分會顯示一條錯誤信息,告訴用戶如何使用腳本,然後退出。

檢查是否提供了至少兩個參數

  • %2 - 這是批處理腳本中第二個參數的佔位符。在上面的例子中,%2 就代表 world。

  • "%2" - 用雙引號將參數括起來是另一種更常見、更可靠的容錯技巧。它可以處理參數中包含空格的情況(例如 %1 是 "hello world")。如果 %2 爲空,這條語句就變成了 if ""=="" ...,同樣是一個有效的比較。

  • " " - 一個空字符串,用於比較。

  • goto noparms - 和第一行一樣,如果條件爲真(即沒有提供第二個參數),就跳轉到錯誤處理部分。

標籤的名字可以隨便起,但是最好是有意義的字符串啦,前加個冒號用來表示這個字符串是標籤,goto 命令就是根據這個冒號(:)來尋找下一步跳到到那裏。

例:

運行顯示:

9、find

在文件中搜索字符串。

  • /V - 顯示所有未包含指定字符串的行。

  • /C - 僅顯示包含字符串的行數。

  • /N - 顯示行號。

  • /I - 搜索字符串時忽略大小寫。

  • /OFF[LINE] - 不要跳過具有脫機屬性集的文件。

  • "string" - 指定要搜索的文字串,

  • [drive:] [path] filename - 指定要搜索的文件。如果沒有指定路徑,FIND 將搜索鍵入的或者由另一命令產生的文字。

  • Find 常和 type 命令結合使用

    以上用法將去除 find 命令自帶的提示語(文件名提示)

    例:

    運行顯示如下:

    10、start 命令

    批處理中調用外部程序的命令(該外部程序在新窗口中運行,批處理程序繼續往下執行,不理會外部程序的運行狀況),如果直接運行外部程序則必須等外部程序完成後才繼續執行剩下的指令
    例: start explorer d:\ #調用圖形界面打開 D 盤

    11、assoc 和 ftype

    文件關聯

    • assoc - 設置'文件擴展名'關聯,關聯到'文件類型'

    • ftype - 設置'文件類型'關聯,關聯到'執行程序和參數'


    當你雙擊一個.txt 文件時,windows 並不是根據.txt 直接判斷用 notepad.exe 打開而是先判斷.txt 屬於 txtfile '文件類型' 。


    再調用 txtfile 關聯的命令行txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1 可以在"文件夾選項"→"文件類型"裏修改這2種關聯

    12、CALL

    CALL 命令主要用於在批處理執行過程中調用另一個批處理腳本或本腳本內的子程序。調用完成後,會繼續執行原批處理中後續的命令。

    CALL 命令主要用於在批處理執行過程中調用另一個批處理腳本或本腳本內的子程序。調用完成後,會繼續執行原批處理中後續的命令。

    語法 1:調用外部批處理腳本

    語法 2:調用內部子程序(標籤段)

    語法 3:調用命令行

    增強的參數擴展


    在 CALL 的子程序或腳本中,可以使用增強的語法對參數(如 %1, %2)進行擴展處理。

    組合使用示例:


    示例 1:演示參數擴展

    運行顯示如下:

    示例 2:動態執行命令字符串

    運行顯示如下:

    13、shift

    用於更改批處理文件中可替換參數(如 %0, %1, %2 ...)的位置,實現參數的“左移”操作。這通常用於處理不指定數量的命令行參數。

    SHIFT /n

    如果命令擴展名被啓用,SHIFT 命令支持/n 命令行開關;該命令行開關告訴命令從第 n 個參數開始移位;n 介於零 和 八之間。

    SHIFT 命令最常見的用途是在循環中處理所有傳入的參數,因爲你無法預知用戶會輸入多少個參數。

    運行 test.bat Apple Banana Cherry,輸出將是:


    14. IF 命令

    條件判斷語句,用於根據條件決定是否執行特定命令。

    語法格式

    (1) IF ERRORLEVEL - 檢查退出代碼

  • 必須放在某個命令之後,檢查該命令的返回值

  • 數字範圍:0~255

  • 判斷邏輯:返回值 ≥ 指定數字時條件成立

  • 必須按數值從大到小順序判斷

  • (2) 字符串比較

  • 區分英文字母大小寫

  • 等號必須爲兩個:==

  • 建議使用以下格式防止空格導致的錯誤:

  • 注意: 括號或引號會成爲字符串的一部分,左右兩邊格式必須一致。

    (3) 文件/目錄存在性檢查

    功能: 檢查指定的文件或目錄是否存在。

    15. setlocal 與變量延遲

    問題引入: 變量讀取機制


    批處理在執行前會整行預處理所有變量(包括用&連接的多條命令),導致無法感知同一行內的變量變化。

    批處理在執行前會整行預處理所有變量(包括用&連接的多條命令),導致無法感知同一行內的變量變化。

    解決方案:啓用變量延遲

    使用 setlocal enabledelayedexpansion 並改用 !變量名! 格式


    實際應用案例

    案例1:for循環中的變量

    不加變量延遲:將顯示5次"ECHO 處於關閉狀態"

    特殊技巧:利用無延遲的特性

    說明:由於預處理,set var2=%var1% 中的 %var1% 仍是原值"abc",因此交換失敗。

    核心要點

    1. 啓用命令:setlocal enabledelayedexpansion

    2. 引用格式:使用 !變量名! 而非 %變量名%

    3. 適用場景:

        • 同一行內修改變量並立即引用

        • 複合語句塊內(如for循環、if語句)中的變量動態變化

    4. 默認行爲:變量修改需到下一條命令才能生效

    16、ATTRIB 顯示或更改文件屬性

    + - 設置屬性。
    - - 清除屬性。
    R - 只讀文件屬性。
    A - 存檔文件屬性。
    S - 系統文件屬性。
    H - 隱藏文件屬性。
    [drive:][path][filename] - 指定要處理的文件屬性。
    /S - 處理當前文件夾及其子文件夾中的匹配文件。
    /D - 也處理文件夾。

    例:

    上面的命令將建立文件夾 autorun,然後將其設爲存檔、系統、隱藏屬性

    終於結束了!!!!!!!後續繼續更新,盡情期待!!!!!!!!!!

    更多遊戲資訊請關註:電玩幫遊戲資訊專區

    電玩幫圖文攻略 www.vgover.com