簡體   English   中英

檢查參數設置在 Windows 批處理腳本中的任何位置

[英]Check parameter is set in any position in a Windows Batch script

在 Windows 批處理腳本中,如何檢查給定參數是否設置在任何位置? 例如,假設我調用myscript.bat ,如下所示:

myscript.bat /foo /bar

我想確定是否設置了/foo我可以這樣做:

if "%1" == "/foo" echo "/foo is set"

但是現在說我按如下方式調用腳本:

myscript.bat /bar /foo

上面的代碼不再回顯/foo is set

如何編寫一個if條件,無論/foo是否在任何位置都為真? Windows Batch 是否提供了一種無需檢查 for 循環中的每個參數的簡單方法?

有幾種方法可以做到這一點。 也許這是最簡單的一種:

@echo off
setlocal

rem Set elements of "argv" array variable
for %%a in (%*) do set "argv[%%a]=1"

rem Check for a given switch
if defined argv[/foo] echo /foo is set

您可以通過以下方式擴展此方法:

@echo off
setlocal

rem Set elements of "argv" array variable
set "n=0"
for %%a in (%*) do set /A "n+=1, argv[%%a]=n"

rem Check for a given switch and its position
if defined argv[/foo] echo /foo is set at position %argv[/foo]%

你應該給出一個真實的例子,說明為什么你需要得到論證的確認。

然而,這個不太好的例子將在沒有 for 和 one if 的情況下工作

@echo off & set foo=
echo "%*" | find "/foo" && set foo=found
if "%foo%" equ "found" echo "/foo is set"

暫無
暫無

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

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