2012-08-27 3 views
0

내 Windows 배치 파일에는 다양한 변수가 있습니다.Windows 일괄 검색 루프로 모든 변수를 루프

set varTest1=test1 
set varTest2=test2 
set otherVar=variable500 
set varS=string 
set yetAnotherVar=foo 

그들은 정말 아무 의미의 꾸물 거리지는 포인트를하지 이잖아해야합니까 : 나는 다음과 같은 변수가 있다고 할 수 있습니다. var으로 시작하는 모든 변수 값을 인쇄하는 방법을 찾고 있습니다. 그래서 특정 도움말 매개 변수로 배치를 실행하면 var 및 그 값으로 시작하는 세 변수를 모두 인쇄해야합니다. 출력은 다음과 같을 수 있습니다 :

IF "%1" == "" ( 
echo No help parameter was set. Program will exit.) ELSE ( 
IF "%1" == "help" ( 
call :showAllAvailableVars) ELSE (
echo Do something else)) 

지금 내가 솔루션이 될 수 있다고 생각 내 방법

:showAllAvailableVars 

있을 것입니다 :

These are the available variables: 
varTest1 : test1 
varTest2 : test2 
varS : string 

나는 매개 변수를 읽기 위해 다음을 생성 findstr 메서드를 사용하여 무언가를 만들었지 만 findstr은 주로 파일 용이고 검색 용이 아니기 때문에 그 방법을 알아낼 수 없습니다. 자신의 프로그램 변수.

답변

2

다른 변수 대신 배열을 만듭니다. 마찬가지로,

당신의 'showAllAvailableVars'기능에서 다음
set var[0]=test1 

set var[1]=test2 

set var[2]=string 

당신은 var로 시작하는 모든 변수를 인쇄 할 수 set var를 사용할 수있는이

for /L %%i in (1,1,%n%) do echo !var[%%i]!

+0

아이디어는 좋지만 불행한 것은 아무것도 인쇄되지 않습니다. – Metalhead89

+1

+1 그 이유는 – jeb

0

을한다.
도 참조하십시오. set /?

+0

전에'n = 2'를 설정하거나 모든 것을 스스로 설정하고 모든 환경 변수를보아야하기 때문입니다. 다음과 같은 특정 변수를 제거하기 위해'find '를 사용할 수도 있습니다 :'set | find/v "Path ="| find/v "ComSpec ="' –

관련 문제