.BAT 스크립트를 어떻게 디버깅 할 수 있습니까?


96

.bat 스크립트를 단계별로 진행하는 방법이 있습니까? 문제는 다른 많은 스크립트를 호출하는 빌드 스크립트가 있으며 호출 순서가 무엇인지 확인하여 정확히 어디로 가야하는지 알고 수정 사항을 추가해야합니다. .


4dos에는 디버거가 빌드되어 있습니다.

답변:


69

.bat 파일의 실행을 단계별로 진행하는 방법을 모르겠지만 디버깅을 사용 echo하고 pause도움을 줄 수 있습니다 .

ECHO
배치 파일의 메시지를 에코합니다. ECHO Hello World와 같은 실행시 화면에 Hello World가 인쇄됩니다. 그러나 배치 파일의 시작 부분에 @ECHO OFF가 없으면 "ECHO Hello World"및 "Hello World"도 표시됩니다. 마지막으로 빈 줄을 만들려면 ECHO를 입력하십시오. 끝에 마침표를 추가하면 빈 줄이 생성됩니다.

PAUSE
계속하려면 아무 키나 누르라는 메시지를 사용자에게 표시합니다.

출처 : 배치 파일 도움말

@ workmad3 : answer에는 echo명령 작업에 대한 더 많은 좋은 팁이 있습니다.

또 다른 유용한 리소스 ... DDB : DOS 배치 파일 팁


1
나는 이것들이 나의 유일한 선택지라고 생각한다.
Vhaerun

18

스크립트에 'echo off'문이 없는지 확인하고 각 스크립트를 호출 한 후 'echo on'을 호출하여 놓친 항목을 재설정하십시오.

그 이유는 에코가 켜져 있으면 명령 인터프리터가 각 명령을 실행하기 전에 (파라미터 처리 후) 출력하기 때문입니다. 프로덕션에서 사용하기에는 정말 좋지 않지만 출력이 잘못되었는지 확인할 수 있으므로 디버깅 목적으로 매우 유용합니다.

또한 호출 된 배치 스크립트 및 프로그램에 의해 설정된 ErrorLevels를 확인하고 있는지 확인하십시오. 이를 위해 .bat 파일에 사용되는 두 가지 방법이 있습니다. 프로그램을 호출 한 경우 오류 수준은 % ERRORLEVEL %에있는 반면 배치 파일에서 오류 수준은 ErrorLevel 변수에 반환되며 주변에 %가 필요하지 않습니다.


13

비슷한 우려에 직면하여 사소한 Google 검색으로 다음 도구를 발견했습니다.

JPSoft의 " Take Command "에는 배치 파일 IDE / 디버거가 포함되어 있습니다. 그들의 짧은 프리젠 테이션 비디오는 멋지게 보여줍니다.

몇 시간 동안 평가판을 사용하고 있습니다. 첫 번째 겸손한 의견은 다음과 같습니다.

  • 한쪽에서는 실제로 .bat 및 .cmd 스크립트를 디버깅 할 수 있으며 이제는 꽤 많은 경우에 도움이 될 수 있다고 확신합니다.
  • 다른 한편으로, 때때로 차단되고 나는 그것을 죽여야했다. 특히 아래 첨자를 디버깅 할 때 (항상 체계적으로는 아님) .. "콜 스택"이나 "스텝 아웃"버튼을 표시하지 않는다.

그것은 시도를 좋아합니다.


1
이것은 아마도 코멘트이어야한다
KyleMit

8
@KyleMit 이유를 설명해 주시겠습니까? 이것은 다른 솔루션과 구별되는 독립형 솔루션이며 원래 질문에 대한 답을 제공합니까? 이 코멘트에 맞게 짧은만큼이기 때문에 그것이 가지고,하지에 ..
Myobis

1
사실 말은 않았다 아마 그것이 어느 길을 갈 수 있다는 점에서,. 그러나 그것은 일종의 lmgtfy 대답입니다. 로부터 도움말 센터 응답 섹션 Always quote the most relevant part of an important link. 링크가 없으면이 답변은 해체됩니다. 다시 말하지만 일반적으로 테스트되지 않은 독점 소프트웨어에 대한 이러한 유형의 임시 제안은 일반적으로 의견에 가장 적합합니다. 그것도 남겨주세요.
KyleMit 2013

8

'실행 단계'(win32) 소프트웨어가 내가 찾던 작업을 정확히 수행하는 것을 발견했습니다. http://www.steppingsoftware.com/

bat 파일을로드하고 중단 점을 배치하거나 출력 및 환경 변수를 확인하면서 단계별로 시작할 수 있습니다.

평가판은 50 줄만 통과 할 수 있습니다. 비슷한 기능을 가진 무료 대안이 있습니까?


7
그들은 그 도메인을 잃었고 아마도 사업을 중단했을 것입니다. web.archive.org/web/20120421211043/http://… 에서 평가 소프트웨어를 계속 다운로드 할 수 있지만 더 이상 라이센스를 구입할 수 없습니다.
twasbrillig 2014 년

6

@ECHO OFF를 제거하고 모든 출력을 로그 파일로 리디렉션하는 배치 파일을 호출합니다.

c :> yourbatch.bat (선택적 매개 변수)> yourlogfile.txt 2> & 1

http://www.robvanderwoude.com/battech_debugging.php 에서 찾을 수 있습니다 .

효과가있다!! 2> & 1을 잊지 마세요 ...

WIZ


2

내가 생각할 수있는 유일한 방법은 echos와 pauses로 코드를 돌리는 것입니다 .


2

결과를 파일로 다시 라우팅하려고 했습니까? whatever.bat> log.txt처럼

이 경우 다른 모든 스크립트가 >> log.txt와 같은 파일에 로깅되는지 확인해야합니다.

또한 배치 파일의 시작과 끝에 날짜 / T 및 시간 / T를 입력하면 해당 시점의 시간을 얻을 수 있으며 스크립트 실행 시간과 순서를 매핑 할 수 있습니다.


결과를 파일에 쓰는 것은 그다지 도움이되지 않습니다. 호출되는 스크립트가 많고 실행되는 실행 파일도 많습니다.
Vhaerun

1
다른 모든 스크립트와 프로그램이 stdin에 쓰면 모든 메시지도 기록됩니다. 배치를 실행하기 만하면 많은 메시지가 실행되고있는 경우 로그 파일로 리디렉션 할 수 있습니다.
Biri

1

또는 .... 다른 .bat 파일에서 기본 .bat 파일을 호출하고 결과 파일에 결과를 출력합니다.

runner.bat> mainresults.txt

runner.bat가 기본 .bat 파일을 호출하는 위치

이제 기본 .bat 파일에서 수행 된 모든 작업을 볼 수 있습니다.


0

매우 빈번한 문제는 아이콘을 두 번 클릭하여 배치 스크립트가 실행된다는 것입니다. 호스팅 명령 프롬프트 ( cmd.exe) 인스턴스도 종료되므로 잠재적 인 출력 및 오류 메시지를 읽을 수 없습니다.

이러한 메시지를 읽으려면 명시 적으로 명령 프롬프트 창을 열고 해당 작업 디렉터리로 이동 한 다음 해당 경로 / 이름을 입력하여 배치 스크립트를 실행하는 것이 매우 중요합니다.


0

cmd \k스크립트 끝에 오류를 볼 수 있습니다 . 실행이 완료된 후 명령 프롬프트를 닫지 않습니다.


-3

또는 cmd 창을 연 다음 거기에서 배치를 호출하면 출력이 화면에 표시됩니다.


2
이것은 답이 될 수 없을 정도로 많은 잘못된 가정을 만듭니다. 아마도 가장 큰 두 가지는 a) 배치 파일이 콘솔 출력을 생성한다고 가정한다는 것입니다. 그것은하지 않고, b)는 배치 파일은 실제로 작동하는지
Leliel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.