오류 후 .bat 파일을 계속 만들 수있는 방법


30

세 가지 작업을 수행하는 Windows에 .bat 파일이 있습니다.

cmd1 arg1 arg2
cmd2 arg3 
cmd3 arg4 arg5 arg6

때로는 cmd1이 실패하고 괜찮습니다 .cmd2와 cmd3을 계속 실행하고 싶습니다. 그러나 내 박쥐는 cmd1에서 멈 춥니 다. 어떻게 피할 수 있습니까?

명확성을 위해 업데이트 -다른 .bat 파일이 아니며 exe 명령입니다. 잘 만하면 나는 이것을 달성하기 위해 .bat 파일 트리를 만들 필요가 없습니다.


를 사용하여 명령을 시작할 수 있어야합니다 cmd /C.
Der Hochstapler

1
작동하지 않는 특정 코드 예제를 보여 주어야합니다. 명령이 오류와 함께 실패하면 배치 파일은 일반적으로 자동 종료되지 않습니다. 구문 오류가 있으면 배치 파일이 종료됩니다. exe 오류로 인해 코드가 종료되면 코드에 해당 동작을 일으키는 논리가 있어야합니다.
dbenham

답변:


18

다른 옵션은 앰퍼 스탠드 ( &) 를 사용하는 것입니다

cmd1 & cmd2 & cmd3

double을 사용하면 이전 명령이 성공적으로 완료된 경우에만 수행됩니다 ( %ERRORLEVEL%==0).

cmd1 && cmd2 && cmd3

이중 파이프 ( ||) 를 사용하는 경우 이전 코드가 오류 코드 ( %ERRORLEVEL% NEQ 0) 와 함께 완료되면 다음 명령 만 실행합니다.

cmd1 || cmd2 || cmd3


인수를 전달할 때이 작업을 수행 할 수 있습니까? 방금 시도했지만 작동하지 않았습니다.
ConfusedNoob

@ConfusedNoob 나는 항상 ... CHKDSK인수와 함께 작동 하는 명령이 있습니다. 나는 입력 check D: & check E: & check F:하고 작동합니다. 박쥐 파일이 인수는 포함 /perf /f /r /b /scan스위치
캐나다 누가 복음 복원 모니카

2
좋은 것! 몇 가지 재 시도를 구현하는 방법에 대한 아이디어를 얻었습니다. cmd || cmd || ... 성공할 때까지 다음 cmd를 실행합니다
iTake

1
이렇게하면 긴 스크립트를 읽을 수 없습니다. 다른 방법이 있습니까?
jan

1
@CanadianLuke Well batch는 Windows 배치 프레임 워크입니다. 수백 개의 명령을 어떻게 대화식으로 실행하지 않습니까? 파워 쉘에 더 나은 접근법이 있습니까? 거기가 더 나빠질까요?
jan

11

cmds를 다른 .bat 파일로 가정하면 다음과 같은 명령이 스택됩니다.

 call cmd1
 call cmd2
 call cmd3

10

이것은 나를 위해 일했다 :

cmd.exe /c cmd1 arg1
cmd2
...

이는 cmd.exeWindows 명령 인터프리터의 새 인스턴스에서 명령을 실행하는 데 사용 되므로 실패한 명령이 배치 스크립트를 중단하지 않습니다. /c플래그는 곧 명령이 완료가 실행 한 종료 할 수있는 통역을 알려줍니다.

cmd2첫 번째 명령이 실패하더라도 실행됩니다. 자세한 내용 cmd /?은 Windows 명령 프롬프트에서 참조하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.