我想在命令批次腳本中為多個參數放置一個變量,因為數量可能會有所不同。就像在 shell 中一樣,我們使用 $@。我嘗試了幾件事,但沒有任何效果。
[編輯:我知道 %* 有效,但實際上需要使用 SHIFT 運算子刪除第一個參數並將其餘參數分配給變數。但是當我執行 SHIFT 並檢查 %* 時,它仍然顯示所有原始參數,與 unix shell 不同。
目前我正在使用 FOR 循環來執行此操作,但想知道是否有任何其他命令/方法可以 POP 第一個參數並將其餘參數分配給另一個變數。
例如:SomeCommand“多個參數”
答案1
%*
批次檔中保存了傳遞給腳本的所有參數(不包括腳本名稱本身),與編寫時完全相同。
這些對你也可能有用:
%0
- 用於呼叫批次檔的命令(可以是foo
、..\foo
、c:\bats\foo.bat
等)
%1
是第一個命令列參數,
%2
是第二個命令列參數,
依此類推,直到%9
(和
轉移
可以用於9號之後的人)。
看 操作方法:將命令列參數(參數)傳遞到 Windows 批次文件。
SHIFT
使用以下命令的範例:
batchfile.bat The Quick Brown
- 如下:
%0
=The Quick Brown、%1
=The、%2
=Quick、%3
=Brown。 - SHIFT 後:
%0
=Quick Brown、%1
=Quick、%2
=Brown - 第二次轉變後:
%0
=快速布朗,%1
=布朗
對於「除了第一個參數之外的所有參數」的問題,沒有很好的答案。對於適用於所有可能參數的方法來說,批次語言不夠精確,因此使用 SHIFT 是最好的方法。
可以在帖子中找到可能解決方案的討論
有沒有辦法指示批次檔中的最後 n 個參數?