2009-08-25 9 views
1

아래의 배치 파일을 정리했습니다. 배치 파일에 대한 경험이별로 없으며 파일이 다음과 같은 오류 메시지와 함께 왜 실패하는지 파악할 수 없습니다.루프 문에 대한 일괄 처리 파일

DO 명령이 예기치 않게 발생했습니다.

다음 코드를 보면 누구나 내가 뭘 잘못했는지 알 수 있습니까? 감사.

@ECHO OFF 
REM Set arguments supplied by Subversion 
SET REPOS = %1 
SET REV = %2 

REM Set working directory path 
SET WORKSPACE = D:\apache\htdocs 

REM Assign changes to variable 
SET CHANGES = svnlook changed %REPOS% -r %REV% 

REM Update only changed files 
FOR /f %%a IN %CHANGES% DO svn update %%a 

답변

0

나는 DO이 실행되지 않을 수 %CHANGES% 루프에 대한 올바른 형식/구조에없는 같은데요. 루프 앞에 다음 줄을 추가하여 SET CHANGES 명령에서 예상 한 결과를 얻었는지 확인하십시오.

ECHO %CHANGES% 

할당하면 CALL을 사용해야 할 수도 실행 더 배치 코드 인 경우

. %1%2에 대한 배치 파일을 호출 할 때 무엇을 전달합니까?

+0

다른 프로그램은 실제로이 배치 파일을 호출하고 디렉토리와 정수 값을 전달합니다. % 1 & % 2 인수를 에코하는 코드를 추가했습니다. 배치 파일을 직접 테스트하고 값을 전달할 때 배치 코드는 전달 된 인수가 할당되지 않았 음을 나타내는 공백을 표시합니다. 즉 post-commit.bat 파일 : /// d :/repos 10 인수가 할당되지 않았습니까? –

+0

@Dan @Binary Worrier가 지적한 것처럼 쉽게 할 수 있습니까? –

+0

@Dave Anderson : Binary Worrier의 제안은 올바른 방향으로 가고 있지만 완벽하지는 않습니다. 코드에는 "usebackq"옵션과 back tick이 필요합니다. –

0

REM 문없이 실행할 수 있습니까? 때로는 의견을 통해 일이 다르게 작동합니다.

6
FOR /f %%a IN %CHANGES% DO svn update %%a 

이 도움이

FOR /f %%a IN (%CHANGES%) DO svn update %%a 

희망, 내가 그것을 가지고 내 원래의 코드를 수정 한 후에

0

해야한다 '일을.' svnlook 명령은 다음을 반환합니다. trunk \ images \ smileyface.jpg

현재 for 루프는 원하는 'smileyface.jpg'대신 'U'만 반환합니다. 따라서 코드가 작동하는 동안 작동하는 방식은 무엇입니까 (아직 작동 중).

다음은 개조 된 코드입니다 (참고 : 내 변수와 할당 된 값 사이의 공백을 모두 제거해야했습니다).