[英]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.