[英]Passing parametric input parameter to batch file
這可能是一個簡單的問題,但是我沒有找到任何線程,可能是我搜索錯誤。
我有一個簡單的蝙蝠腳本,並傳遞了一些參數。 目前,我正在根據那里的順序爭論。 但我想為用戶簡化。
我當前的命令行如下所示: testBatch.bat setupip setupuser setuppass
我當前的批處理腳本如下所示:
set setupip=%1
set setupuser=%2
set setuppass=%3
echo I am doing some operation after this based on the input I got.
現在,我想修改命令,以使用戶不必擔心要傳遞的參數順序。 基本上,我希望看到這樣的命令: testBatch.bat --ip setupip --user setupuser --password setuppass
我必須在批處理腳本中進行哪些修改?
您正在尋找的東西稱為“命名參數”。 我在這里找到相同問題的鏈接。
我從該鏈接中得到的答復如下:
set c=defaultC
set s=defaultS
set u=defaultU
:initial
if "%1"=="" goto done
echo %1
set aux=%1
if "%aux:~0,1%"=="-" (
set nome=%aux:~1,250%
) else (
set "%nome%=%1"
set nome=
)
shift
goto initial
:done
echo %c%
echo %s%
echo %u%
運行以下命令:
arguments.bat -c users -u products
將生成以下輸出:
users
defaultS
products
嘗試這個:
@echo off
for %%a in (%*) do (
call set "%%~1=%%~2"
shift
)
echo :%--user%
echo :%--pass%
如果通過,則調用如下:
namedArgs.bat --user user --pass pass
輸出將是這樣的:
:用戶
:通過
這還將處理帶空格的引用參數。
有一個名為shift
的批處理命令,該命令基本上可以對參數變量進行左移。
因此,作為腳本的開始,您需要一個循環
在該循環內,您使用if
語句為選項的“動詞”部分解碼%1
在if
塊內,您調用shift
。 然后舊的%2
變成新的%1
,舊的%3
變成新的%2
,依此類推
因此,如果需要,可以在其中包含一個動詞的輔助參數。 然后再次撥打shift
。
循環直到您的參數為空。 Tadah!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.