I 무작위 오류 메시지가 발생하는 발견 Windows XP에서 배치 파일을 실행하는 동안 :레이블이있는 경우에도 "지정된 배치 레이블을 찾을 수 없습니다"라는 이유가 발생하는 이유는 무엇입니까?
시스템은 물론 라벨의
이 존재 배치 레이블이 지정된 name_of_label을 찾을 수 있습니다. 이 오류의 원인은 무엇입니까?
I 무작위 오류 메시지가 발생하는 발견 Windows XP에서 배치 파일을 실행하는 동안 :레이블이있는 경우에도 "지정된 배치 레이블을 찾을 수 없습니다"라는 이유가 발생하는 이유는 무엇입니까?
시스템은 물론 라벨의
이 존재 배치 레이블이 지정된 name_of_label을 찾을 수 있습니다. 이 오류의 원인은 무엇입니까?
사실, 당신은이 일을 위해이 조건이 필요합니다
이참조. The system cannot find the batch label specified 및 Batch-as-batch-can!
배치 파일에 유닉스 라인 끝이있는 경우 가끔 발생합니다.
그냥 unix2dos와 문제가 해결되어야합니다.
다른 스크립트를 호출 할 때 호출자의 환경에서 호출하는 대신 CALL을 사용해야합니다.
다음은 문제 및 해결 방법입니다. 이 문제는 버그 또는 DOS 배치 cmd 프로그램의 기능입니다. 우선 명확한 문제 설명. ": dothis"와 같은 대상 레이블을 가진 DOS 배치 파일이 있고 레이블 끝에는 공백이 없으면 줄 끝이 UNIX 줄 끝인 경우 배치 파일이 작동하지 않습니다. 즉, 파일을 사용하기 전에 파일에서 unix2dos를 실행해야합니다.
DOS 명령 행 처리기 (셸 프로그램)의 근본 원인은 UNIX 끝 줄 문자를 레이블의 일부로 사용합니다. 파트로 이동하면 레이블로 사용되지 않으므로 레이블이 실제로 존재하지 않으므로 절대로 발견되지 않습니다. 솔루션은 각 대상 레이블의 끝 부분에 추가 공간을 두거나 모든 줄을 더 잘 표현하는 것입니다. 이제 유닉스 엔드 라인은 공간이 분리 자 역할을하기 때문에 작동하지 않으며 모든 것이 작동합니다.
나는 이전에 같은 문제가 발생했습니다. 그러나 그 근본 원인은 전혀 CRLF가 아니 었습니다. 왜냐하면 스크립트에서 Ant와 같은 외부 프로그램을 실행했지만 Ant 앞에 CALL
을 넣지 않았기 때문입니다. 따라서 일괄 처리 스크립트에 사용 된 모든 외부 프로그램 CALL
을 확인하십시오.
나는 이것이 추가적인 이유라고 지적하고 싶다. 나는 외부 프로그램을 부를 때이 문제를 가지고 있었고이 제안은 문제를 해결했다. –
Groovy와 함께 제공되는 일괄 처리 스크립트에서이 문제점을 발견했습니다. 왜 Windows 대신 exe를 사용하지 않는지 확실하지 않습니다! – Neel
Windows에서'.bat'을 실행 중일 수 있습니다. 방금'mvn'을 실행하면 실제로 배치 파일 인'mvn.cmd'가 실행되고'mvn'을 실행할 때마다이 스크립트가 실패한 이유를 알기 위해 시간을 잃어 버렸습니다. – jordanpg
단어에서 시작 명령을 복사하여 명령 창에 붙여 넣은 후에이 문제가 발생했습니다. 옵션 앞에 "-"가 붙어 있고 도스와 같은 모양이라고 생각했습니다. "-"아닙니다. "-"를 타이핑 한 후 문제가 해결되었고 일괄 처리가 ... 힘들었습니다. 문제를 찾으려면 ....
이제는 .cmd 파일과 Windows 8에서 비슷한 문제가 발생했습니다. 해결 방법은 모든 라인 결말을 CR + LF DOS 스타일로 변경하는 것입니다. 배치 파일이 대부분 작동하고 줄을 재정렬하면 효과가 변경 되었기 때문에이 문제는 혼란 스러웠습니다.
call:function_A "..\..\folderA\"
call:function_B "..\..\folderB\"
call:function_C "..\..\folderC\"
call:function_D "..\..\folderD\"
goto:eof
:function_A
rem do stuff
goto:eof
...etc...
기능 C가 오류 "지정한 일괄 레이블을 찾을 수 없습니다"원인이 :
.cmd 파일이처럼 보였다. 이상하게도 호출을 재정렬하면 사라질 수 있습니다. 줄 끝을 0x0A에서 0x0D0A로 변경하면 문제가 해결 된 것으로 보입니다.
아마도 VonC는 "배치 파일에서 CRLF 줄 끝을 사용해야합니다."라는 의미 일 수 있습니다.
VonC의 의견과 관련하여 혼동을 피하기는하지만 논리적으로는 정확합니다. 그는 말하기를 (말하자면) 오류가 발생하기 때문에이 두 조건이 맞아야 만합니다. ERROR == (A && B) 따라서 대부분의 사람들이 오류를 원하지 않는다면, 그가 말한 것을 뒤집을 수 있습니다! 오류 == (! A ||! B)이므로 오류를 피하려면 하나의 조건 또는 다른 조건의 반전이 true이어야합니다. 따라서 오류를 방지하려면 CRLF를 사용하거나 블록 경계에 걸쳐서 피하십시오. 더 간단한 배치 파일의 경우 CR LF가 아마도 작동 할 것입니다. – user314159
이클립스와 함께 제공되고 MSVC에서 호출되는 앤트 배치 파일로이 문제가 발생했습니다. 줄 끝이 모두 ~, 고쳐서 변경되었습니다. –
여기 또 다른 이유는 다음과 같습니다. http://stackoverflow.com/q/1522129/471214 – mmdemirbas
Groovy와 함께 제공되는 일괄 처리 스크립트에서이 문제점을 발견했습니다. 모든 스크립트에는 LF 만 포함되어 있으므로 수동으로 CRLF로 교체해야했습니다. – Neel