2011-09-19 5 views
2
:obje7 
set gn=%random% 
if /i %gn% lss 1 goto obje%go% 
if /i %gn% gtr 5 goto obje%go% 
set goal%gn%="test" 
echo hi > goal%go%.txt 
echo hi > g2.txt 
goto go 

목표는 % random_number %로 테스트를 설정합니다. 맞습니까?박쥐 - 에코가 txt 파일에서 벗어났습니다

(
echo %goal1% 
echo %goal2% 
echo %goal3% 
echo %goal4% 
echo %goal5% 
) >> mcbingo.txt 

내가 얻을 결과는 다음과 같습니다

ECHO is off. 
test 
ECHO is off. 
test 
test 

모든 : objeX이 같은 코드이지만, X를 변경하고 g2.txt 예를 들어 g1.txt이다.

누구나 무슨 생각이 틀린가요?

+0

환경은 목표 1 및 목표 3 변수가 포함되어 있지 않습니다. 따라서 echo 명령은 인수가없는 단순한 "echo"입니다. 이것은 무작위로 사용할 때 예상되는 결과입니다. .bat 파일을 여러 번 실행하면 더 많은 변수를 얻을 수 있습니다. –

+0

오, 알겠습니다. 문제가 생깁니다. 어떻게 든 이런 식으로 만들 수 있습니까? if goal1 = * goto objeX – david

답변

7

goal 변수 중 일부가 초기화되지 않은 상태로 유지됩니다. 당신이 그들을 출력 할 때, 초기화되지 않은 변수는 빈 문자열로 평가하고, 해당 echo 명령은 간단하게 다음과 같이 :

매개 변수없이
echo 

, echo 디스플레이 (콘솔에 때 ON을 배치 명령을 메아리의 상태를, 그들은 일괄 처리에서 더 일반적인 OFF 일 때 표시됩니다.

이 동작을 피하고 대신 빈 문자열을 표시하려면 echo%goal…% 사이에 구분 기호를 추가하십시오. this answer에서 다음과 같이 (는 가장 적합한 것, 거기 당신이 그 위치에서 사용할 수있는 구분 기호의 숫자는하지만 :

(
echo(%goal1% 
echo(%goal2% 
echo(%goal3% 
echo(%goal4% 
echo(%goal5% 
) >> mcbingo.txt 
관련 문제