CMD只使用多个参数之一启动.exe

时间:2018-04-27 09:33:57

标签: powershell batch-file

我希望我的批处理脚本能够自己选择一个参数(来自大约70个参数,例如.param1 - param70),而不需要我输入。

除了随机参数之外,exe还有更多的参数始终保持不变。

我不知道如何把它放在代码中。

以下是我的想法的一个例子:

param1=--abc
param2=--mno
param3=--xyz

./example.exe --hello --world --(param1 OR param2 OR param3)

等于:

./example.exe --hello --world --abc

./example.exe --hello --world --mno

./example.exe --hello --world --xyz

3 个答案:

答案 0 :(得分:4)

这可以批量工作。你需要设置每个参数。

set /a numb=%random% %% 3
goto :param%numb%

:param0
Set "var=abc"
Goto :execute

:param1
Set "var=mno"
Goto :execute

:param2
Set "var=xyz"
Goto :execute

:execute
.\example.exe --hello --%var%

对于70个参数,您需要将%% 3更改为%% 70

答案 1 :(得分:1)

在powershell中:

$params = "abc","mno","xyz"

& example.exe --hello --world --$(Get-Random -InputObject $params -Count 1)

答案 2 :(得分:1)

处理70个参数Gerhards方式将变得乏味。我将构建一个参数数组并获得一个随机数组。

:: Q:\Test\2018\04\27\SO_50059458.cmd
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion

Rem Build param[] array and count params
Set Cnt=-1&Set "param= abc bcd cde def efg fgh ghi hij ijk jkl klm lmn mno"
Set "param=%param: ="&Set /a Cnt+=1&Set "param[!Cnt!]=%"
:: show array
Set param
:: get random # in Cnt
Set /a Rnd=%Random% %% Cnt 
echo Random %Rnd% out of %Cnt%
Echo .\example.exe --hello --!param[%Rnd%]!

示例输出:

> Q:\Test\2018\04\27\SO_50059458.cmd
param[0]=abc
param[10]=klm
param[11]=lmn
param[12]=mno
param[1]=bcd
param[2]=cde
param[3]=def
param[4]=efg
param[5]=fgh
param[6]=ghi
param[7]=hij
param[8]=ijk
param[9]=jkl
Random 10 out of 12
.\example.exe --hello --klm