我需要在批处理文件中随机生成一些共享某个范围的值,并将它们连接在一起,用空格分隔。除了将空格分隔的数字连接在一起外,一切都有效。具体的问题是与带空格的数字连接,我该怎么做呢?
相关部分如下:
::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
答案 0 :(得分:2)
The following website (SS64.com)是不可用的。 您可以在SET,IF上找到优秀的网页。
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”。