簡體   English   中英

將帶有開關的參數傳遞給批處理文件

[英]Passing parameters with switches to a batch file

無論指定 A 和 B 的順序如何,如何顯示與開關 A 和開關 B 關聯的值?

考慮以下對批處理文件 ParamTest.cmd 的調用:

C:\Paramtest.cmd \A valueA \B valueB

下面是 C:\Paramtest.cmd 的內容:

ECHO Param1=%1
ECHO Param2=%2

ECHO Param3=%3
ECHO Param4=%4

Output:

Param1=\A 
Param2=valueA
Param3=\B
Param4=valueB

我希望能夠識別通過它們的開關名稱 A 和 B 傳遞的兩個值,而不管這些開關的傳遞順序如何

例如,如果我執行以下調用:

C:\Paramtest.cmd \B valueB \A valueA

我希望能夠顯示

A=ValueA
B=ValueB

..並且具有相同的 output 即使我在切換參數順序的情況下調用批處理文件:

C:\Paramtest.cmd \A valueA \B valueB

我該怎么做呢?

簡而言之,你需要定義一個循環並成對處理參數。

我通常使用涉及標簽和 GOTO 以及 SHIFT 的方法處理參數列表,基本上像這樣:

…
SET ArgA=
SET ArgB=

:loop
IF [%1] == [] GOTO continue
IF [%1] == [/A] …
IF [%1] == [/B] …
SHIFT & GOTO loop

:continue
…

也可以使用%*掩碼和FOR循環來處理參數,如下所示:

…
SET ArgA=
SET ArgB=

FOR %%p IN (%*) DO (
  IF [%%p] == [/A] …
  IF [%%p] == [/B] …
)
…

但這對您的情況有點困難,因為您需要成對處理 arguments。 在我看來,第一種方法更靈活。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM