在批处理文件中将空格分隔的数字连接在一起

时间:2010-01-18 20:01:22

标签: dos batch-file

我需要在批处理文件中随机生成一些共享某个范围的值,并将它们连接在一起,用空格分隔。除了将空格分隔的数字连接在一起外,一切都有效。具体的问题是与带空格的数字连接,我该怎么做呢?

相关部分如下:

::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 个答案:

答案 0 :(得分:2)

对于批处理脚本引用,

The following website (SS64.com)是不可用的。 您可以在SETIF上找到优秀的网页。

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”。