- 批處理指令碼教程
- 批處理指令碼 - 首頁
- 批處理指令碼 - 概述
- 批處理指令碼 - 環境
- 批處理指令碼 - 命令
- 批處理指令碼 - 檔案
- 批處理指令碼 - 語法
- 批處理指令碼 - 變數
- 批處理指令碼 - 註釋
- 批處理指令碼 - 字串
- 批處理指令碼 - 陣列
- 批處理指令碼 - 決策
- 批處理指令碼 - 運算子
- 批處理指令碼 - 日期和時間
- 批處理指令碼 - 輸入/輸出
- 批處理指令碼 - 返回程式碼
- 批處理指令碼 - 函式
- 批處理指令碼 - 程序
- 批處理指令碼 - 別名
- 批處理指令碼 - 裝置
- 批處理指令碼 - 登錄檔
- 批處理指令碼 - 網路
- 批處理指令碼 - 列印
- 批處理指令碼 - 除錯
- 批處理指令碼 - 日誌記錄
- 批處理指令碼資源
- 批處理指令碼 - 快速指南
- 批處理指令碼 - 有用資源
- 批處理指令碼 - 討論
批處理指令碼 - 使用 SHIFT 運算子
命令列引數的限制之一是它只能接受最多 %9 的引數。讓我們來看一個這個限制的例子。
示例
@echo off echo %1 echo %2 echo %3 echo %4 echo %5 echo %6 echo %7 echo %8 echo %9 echo %10
輸出
如果以上程式碼儲存在一個名為 test.bat 的檔案中,並且該檔案執行如下:
test.bat a b c d e f g h i j
則輸出如下。
a b c d e f h i a0
從上面的輸出可以看出,應該顯示為“j”的最終值顯示為 a0。這是因為沒有名為 %10 的引數。
可以使用 SHIFT 運算子避免此限制。在批處理檔案處理完其第一個引數後,可以將它們移位(只需插入一行僅包含 SHIFT 命令),導致 %1 獲取值 B,%2 獲取值 C,依此類推,直到 %9,現在獲取值 J。繼續此過程,直到至少 %9 為空。
讓我們看一個如何使用 SHIFT 運算子克服命令列引數限制的示例。
示例
@ECHO OFF :Loop IF "%1"=="" GOTO Continue echo %1% SHIFT GOTO Loop :Continue
如果以上程式碼儲存在一個名為 test.bat 的檔案中,並且該檔案執行如下:
test.bat a b c d e f g h i j
則輸出如下。
a b c d e f h i j
注意
批處理檔案會忽略命令列中的某些字元,具體取決於 DOS 版本、它們是否“轉義”以及通常取決於它們在命令列中的位置 -
逗號 (",") 將被空格替換,除非它們是雙引號中字串的一部分。
分號 (";") 將被空格替換,除非它們是雙引號中字串的一部分。
"=" 字元有時會被空格替換,但如果它們是雙引號中字串的一部分則不會。
第一個正斜槓 ("/") 僅在它緊跟在命令後面且前面沒有空格時才會被空格替換。
多個空格將被單個空格替換,除非它們是雙引號中字串的一部分。
製表符將被單個空格替換。
第一個命令列引數之前的空格將被忽略。
最後一個命令列引數之後的空格將被修剪。
batch_script_functions.htm
廣告