在批進行中适當的引用變量将會使你所編制的程式應用面更廣。批處理每次能處理的變量從%0~%9共10個。其中%0預設給批處理的檔案名使用。除非在使用SHIFT指令後%0才能被%1所替代。引用shift指令的例子如果把%1前面多加上一個%0那麼結果如下:
C::\>SHIFT.BAT 1 2 3 4 5 6 7 8 9 10 11
SHIFT.BAT 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10
2 3 4 5 6 7 8 9 10 11
系統是如何區分每個變量的呢,系統區分變量的規則為字元串中間的空格,即隻要發現空格就把空格前面的字元當作一個變量而空格後面的字元則作為另一個變量。如果你的變量是一個當中包含空格的長目錄名這時候你需要用上一節特殊符号8中所用的引号将他圈起來。例:
批處理内容為:
ECHO %1
ECHO %2
ECHO %3
輸入指令:
C:\>TEST “Program Files” Program Files
Program Files
Program
Files
在一個複雜的批進行中又可能同時使用的變量會超過10個這時候會和系統的規則想沖突那麼這個問題怎麼解決呢?在系統中還有一種變量稱之為環境變量(使用SET指令可以檢視目前系統的環境變量)如目前系統目錄是%windir%或%SystemRoot%等。當同時使用的參數超過10個的時候,我們可以把某些在後面的程式中還要調用的變量儲存為環境變量。具體用法如 SET A=%1 這樣我們就命名了一個新的環境變量A 在調用變量A的時候要%A%這樣調用,環境變量不受SHIFT指令影響。如果要改變一個環境變量需要重新對其設定才能改變。當然也可以進行變量與變量之間的傳遞來達到目的。下面我們來看一個例子,批處理如下:
ECHO OFF
SET PASS=%1
SHIFT
SET PASS1=%1
SHIFT
ECHO %PASS% %PASS1% %1 %2 %3 %4 %5 %6 %7 %8 %9
SHIFT
ECHO %PASS% %PASS1% %9
SET PASS=%PASS1% 變量的傳遞
SET PASS1=%9
SHIFT
ECHO %PASS% %PASS1% %9
使用指令:C:\>TEST A B 3 4 5 6 7 8 9 10 K L
A B 3 4 5 6 7 8 9 10 K 注意:這一行顯示了11個變量
A B L 在使用了3次SHIFT之後%9變成了L
B L 變量的傳遞後的結果
轉載于:https://www.cnblogs.com/DeeLMind/p/7412511.html