2013-09-24 5 views
0

다음은 시나리오입니다.배치 스크립트 - 변수가 변수 안에 중첩되어 있습니까?

약 12 ​​개의 하위 스크립트를 호출하는 상위 스크립트가 있습니다. 그 중 하나는 다소 복잡한 폴더/파일 동기화 작업입니다. 각 하위 스크립트는 배치 파일 (예 : variable.bat)에 변수를 기록한 후 다음 실행시 상위 스크립트가로드합니다.

폴더 동기화 스크립트는 상위 스크립트를 통해 전달 된 매개 변수를 기반으로 많은 수의 폴더 목록에서 선택합니다. 이것은 부모 스크립트에 의해로드 된 다음 실행에 변수를 생성

ECHO SET pair-folder-%1=yes>>c:\variable.bat 

:

아이 스크립트의 SET 명령은 다음과 같이 보인다. 여기에 문지름이 있습니다. 다음에 자식 스크립트가 올 때 해당 변수를 호출하는 동작 (IF 트랩을 통해)을 어떻게 스크립팅합니까? 내 IF 트랩은 다음과 같이 보일 것입니다 상상 :

IF %pair-folder-%1%=yes GOTO nopair 

문제는 내가 제대로 그 해석 배치를 얻을 수없는 것입니다 - 나는 지연 확장을 사용하여 변수를 몇 가지 방법을 중첩 시도, 매개 변수를 먼저 로컬 변수에 매핑해야합니까?

기본적으로 부모 스크립트가 다음 실행시 variable.bat를 호출하면 하위 스크립트 내에서 새로 설정된 변수를 참조하려면 어떻게해야합니까?

답변

0

set pair-folder-%1=yes 행을 variable.bat에 추가하면 이되어 pair-folder-* 개의 변수가 증가합니다.

이제 당신을 위해 그렇게 할 것입니다 다음

if defined pair-folder-%1 ... 

, pair-folder-%이 설정되어 있는지 확인하십시오. (valuefound 더 값 "설정"될 것이다 - 당신이 한 쌍 - 폴더 - % 1의 값을 찾으려면

set "valuefound=" 
for /f "tokens=1*delims==" %%i in ('set pair-folder-%1 2^>nul') do (
if /i "%%i"=="pair-folder-%1" set "valuefound=%%j" 
) 

그렇게해야 다음 (즉, 그냥 세트 여부 아니에요) 즉 변수가 정의되지 않은 경우 undefined) 그 값.

+0

감사합니다. IF DEFINED가 완전히 취했습니다. 올바르게 인식되기 전에 매개 변수를 변수에 매핑해야했지만, 임시 (임시) 행은 하나뿐입니다. 훌륭한 제안, 다시 한 번 감사드립니다. – user2363189

관련 문제