簡體   English   中英

將參數輸入參數傳遞給批處理文件

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

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