2010-01-18 3 views
0

특정 범위를 공유하는 여러 값을 임의로 배치 파일에 생성하고 공백으로 구분하여 연결해야합니다. 공백으로 구분 된 숫자를 연결하는 것을 제외하고는 모두 작동합니다. 문제가되는 특정 문제는 공백이있는 숫자와 연결됩니다. 어떻게해야합니까?배치 파일에서 공백으로 구분 된 숫자를 함께 연결

와 관계있는 부분은 다음과 같습니다

::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 

답변

2

The following website (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".

+0

답장을 보내 주셔서 감사합니다. 실제로 필자가해야 할 일은 네 번째 줄의 스크립트처럼 보이고 매력처럼 작동하는 공간을 제거하는 것이 었습니다! – Geoff

+0

또한 첫 번째 권장 사항 (불필요한 % 기호 제거)을 사용하여 파일을 수정했지만 계속 작동하지만 지금은 더 깨끗해 보입니다. :) 당신이 짐작했듯이, 나는 그들을 % random %로 유지해야만했다. – Geoff

+0

달콤한 - 기꺼이 도와 드리겠습니다. 오늘 배치 스크립트에서 별도의 "공백"유형 문제를 다루었으므로 나는 당신의 고통을 느꼈습니다 :) –