Объединение разделенных пробелами чисел в пакетном файле - PullRequest
0 голосов
/ 18 января 2010

Мне нужно случайным образом сгенерировать несколько значений в командном файле, которые разделяют определенный диапазон, и объединить их вместе, разделенные пробелами.Все работает, кроме объединения чисел, разделенных пробелами.Конкретный проблемный вопрос связан с объединением чисел с пробелами, как мне это сделать?

Соответствующая часть выглядит следующим образом:

::Assume %minA%, %maxA% and %randB% are defined correctly.
set /a randA=(%random% %% %maxA%) + %minA%
set agent_counter=0
:start_agent_loop
if %agent_counter% equ %randA% goto end
set /a randApos=(%random% %% %randB%) + 1
::supposedly (if I recall), simply having a space between %agent_starts%
::and %randApos% should do the trick, this doesn't seem to be the case.
set agent_starts = %agent_starts% %randApos%
set /a agent_counter +=1
goto start_agent_loop

:end
echo -A %agent_starts%

В идеале это должно напечатать что-то вроде ...

C:\Path\>genparams.bat
-A 2 4 5

В настоящее время я получаю

-A

1 Ответ

2 голосов
/ 18 января 2010

Следующий веб-сайт (SS64.com) НЕ УКАЗАН для справки по пакетному сценарию. На SET , IF есть отличные страницы, назовите это.

Команда SET не слишком проста с дополнительными пробелами. Кроме того, set / a, по-видимому, проверит все строки, чтобы определить, являются ли они переменными, поэтому я не думаю, что% требуются для maxA и minA. Я предположил, что% random% была специальной переменной пакетного файла, которая возвращает случайное число, поэтому я не удалила их из этого. (хотя вы можете это сделать)

Изменение:

set /a randA=(%random% %% %maxA%) + %minA%

Кому:

set /a randA=(%random%%%maxA)+minA

И изменить:

set agent_starts = %agent_starts% %randApos%

Кому:

set agent_starts=%agent_starts% %randApos%

Сделав это (и установив minA = 1, maxA = 10, randB = 5), я получил это при первом запуске: «-A 3 4 3».

...