我希望我的批处理脚本能够自己选择一个参数(来自大约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
答案 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