CMD запускает .exe только с одним из нескольких параметров - PullRequest
0 голосов
/ 27 апреля 2018

Я бы хотел, чтобы мой пакетный скрипт произвольно выбирал один параметр самостоятельно (из примерно 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 голосов
/ 27 апреля 2018

В PowerShell:

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

& example.exe --hello --world --$(Get-Random -InputObject $params -Count 1)
0 голосов
/ 27 апреля 2018

Обработка 70 параметров способом Герхардса станет утомительной. Я бы построил массив параметров и получил бы случайный.

:: 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
0 голосов
/ 27 апреля 2018

Это может работать в пакетном режиме. Однако вам нужно установить каждый параметр.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...