How can I debug a .BAT script?

188,542

Solution 1

I don't know of anyway to step through the execution of a .bat file but you can use echo and pause to help with debugging.

ECHO
Will echo a message in the batch file. Such as ECHO Hello World will print Hello World on the screen when executed. However, without @ECHO OFF at the beginning of the batch file you'll also get "ECHO Hello World" and "Hello World." Finally, if you'd just like to create a blank line, type ECHO. adding the period at the end creates an empty line.

PAUSE
Prompt the user to press any key to continue.

Source: Batch File Help

@workmad3: answer has more good tips for working with the echo command.

Another helpful resource... DDB: DOS Batch File Tips

Solution 2

Make sure there are no 'echo off' statements in the scripts and call 'echo on' after calling each script to reset any you have missed.

The reason is that if echo is left on, then the command interpreter will output each command (after parameter processing) before executing it. Makes it look really bad for using in production, but very useful for debugging purposes as you can see where output has gone wrong.

Also, make sure you are checking the ErrorLevels set by the called batch scripts and programs. Remember that there are 2 different methods used in .bat files for this. If you called a program, the Error level is in %ERRORLEVEL%, while from batch files the error level is returned in the ErrorLevel variable and doesn't need %'s around it.

Solution 3

Facing similar concern, I found the following tool with a trivial Google search :

JPSoft's "Take Command" includes a batch file IDE/debugger. Their short presentation video demonstrates it nicely.

I'm using the trial version since a few hours. Here is my first humble opinion:

  • On one side, it indeed allows debugging .bat and .cmd scripts and I'm now convinced it can help in quite some cases
  • On the other hand, it sometimes blocks and I had to kill it... specially when debugging subscripts (not always systematically).. it doesn't show a "call stack" nor a "step out" button.

It deverves a try.

Solution 4

I found 'running steps' (win32) software doing exactly what I was looking for: http://www.steppingsoftware.com/

You can load a bat file, place breakpoints / start stepping through it while seeing the output and environment variables.

The evaluation version only allows to step through 50 lines... Does anyone have a free alternative with similar functionality?

Solution 5

rem out the @ECHO OFF and call your batch file redirectin ALL output to a log file..

c:> yourbatch.bat (optional parameters) > yourlogfile.txt 2>&1

found at http://www.robvanderwoude.com/battech_debugging.php

IT WORKS!! don't forget the 2>&1...

WIZ

Share:
188,542

Related videos on Youtube

Vhaerun
Author by

Vhaerun

Free time ? Perl/Ruby scripter : Java developer

Updated on July 08, 2022

Comments

  • Vhaerun
    Vhaerun almost 2 years

    Is there a way to step through a .bat script? The thing is, I have a build script , which calls a lot of other scripts, and I would like to see what is the order in which they are called, so that I may know where exactly I have to go about and add my modifications.

  • KyleMit
    KyleMit over 10 years
    This should probably be a comment
  • Myobis
    Myobis over 10 years
    @KyleMit can you please explain why ? as this is a standalone solution distinct from the others and that does answer the original question ? it is not because it is short enough to fit in a comment, that it has to..
  • KyleMit
    KyleMit over 10 years
    I actually did mean probably, in that it could go either way. But it's kind of a lmgtfy answer. From the help center answer section: Always quote the most relevant part of an important link. Without the link, this answer dissolves, which, again, is probably fine, but typically this type of ad-hoc suggestion of an un-tested, proprietary software would generally fit best in a comment. Feel free to leave it as well.
  • twasbrillig
    twasbrillig over 9 years
    They've lost that domain and presumably have gone out of business. You can still download the evaluation software from web.archive.org/web/20120421211043/http://… but can no longer purchase a license.
  • Leliel
    Leliel over 6 years
    This makes so many wrong assumptions as to not even be an answer. probably the biggest two are that a) the batch file is assumed to produce console output. It doesn't have to, and b) that the batch file is actually working
  • aschipfl
    aschipfl over 3 years
    @Leliel, ad a) yes, the batch file may or may not produce console output, but you will not find out when you double-click its icon, but when running it from cmd.exe will show it in case; ad b) your claim is wrong, the batch file does not have to work, there may even be a fatal syntax error, which usually generates a console error message…
  • aschipfl
    aschipfl over 3 years
    Actually it's cmd /K. Anyway, what's wrong with pause?