¿Cómo puedo depurar un script .BAT?

¿Hay alguna manera de atravesar un script .bat? La cuestión es que tengo un script de comstackción, que llama a muchos otros scripts, y me gustaría ver cuál es el orden en el que se llaman, para poder saber exactamente dónde tengo que ir y agregar mis modificaciones. .

No sé de todos modos pasar por la ejecución de un archivo .bat pero puede usar echo y pause para ayudar con la depuración.

ECO
Emitirá un mensaje en el archivo por lotes. Como ECHO Hello World imprimirá Hello World en la pantalla cuando se ejecute. Sin embargo, sin @ECHO OFF al comienzo del archivo de proceso por lotes también obtendrá “ECHO Hello World” y “Hello World”. Finalmente, si desea crear una línea en blanco, escriba ECHO. agregar el período al final crea una línea vacía.

PAUSA
Indique al usuario que presione cualquier tecla para continuar.

Fuente: Ayuda de archivo por lotes

@ workmad3: answer tiene más buenos consejos para trabajar con el comando echo .

Otro recurso útil … DDB: DOS Batch File Tips

Asegúrese de que no haya declaraciones de ‘eco off’ en las secuencias de comandos y llame a ‘echo on’ después de llamar a cada script para restablecer las que haya perdido.

El motivo es que si se deja activado el eco, entonces el intérprete de comandos emitirá cada comando (después del procesamiento del parámetro) antes de ejecutarlo. Hace que parezca realmente malo para usar en producción, pero es muy útil para la depuración ya que puedes ver dónde ha salido la salida.

Además, asegúrese de estar comprobando los ErrorLevels establecidos por los scripts y progtwigs por lotes llamados. Recuerde que hay 2 métodos diferentes utilizados en los archivos .bat para esto. Si llamó a un progtwig, el nivel de error está en% ERRORLEVEL%, mientras que en los archivos por lotes, el nivel de error se devuelve en la variable ErrorLevel y no necesita% a su alrededor.

Enfrentando una preocupación similar, encontré la siguiente herramienta con una búsqueda trivial en Google:

Take Command ” de JPSoft incluye un archivo IDE / depurador por lotes. Su breve video de presentación lo demuestra muy bien.

Estoy usando la versión de prueba desde hace unas horas. Aquí está mi primera opinión humilde:

  • Por un lado, de hecho permite la depuración de scripts .bat y .cmd y ahora estoy convencido de que puede ayudar en algunos casos
  • Por otro lado, a veces bloquea y tuve que matarlo … especialmente cuando se depuran los subíndices (no siempre de manera sistemática) … no muestra una “stack de llamadas” ni un botón de “salir”.

Deverves una prueba.

Encontré el software ‘running steps’ (win32) haciendo exactamente lo que estaba buscando: http://www.steppingsoftware.com/

Puede cargar un archivo bat, colocar puntos de interrupción / comenzar a recorrerlo mientras ve las variables de salida y de entorno.

La versión de evaluación solo permite pasar por 50 líneas … ¿Alguien tiene una alternativa gratuita con funcionalidades similares?

rem el @ECHO OFF y llame a su archivo por lotes redirigir TODA la salida a un archivo de registro.

c:> yourbatch.bat (parámetros opcionales)> yourlogfile.txt 2> & 1

encontrado en http://www.robvanderwoude.com/battech_debugging.php

¡¡FUNCIONA!! no te olvides de los 2> y 1 …

FENÓMENO

La única forma en que puedo pensar es salpicar el código con echo s y pause s.

¿Intentó redirigir el resultado a un archivo? Como whatever.bat> log.txt

Debe asegurarse de que en este caso todos los demás scripts invocados también inicien sesión en el archivo como >> log.txt

Además, si coloca una fecha / T y una hora / T al principio y al final de ese archivo por lotes, obtendrá las veces que fue en ese momento y podrá mapear el tiempo y el orden de ejecución de su secuencia de comandos.

O bien … Llame a su archivo .bat principal desde otro archivo .bat y envíe el resultado a un archivo de resultados, es decir,

runner.bat> mainresults.txt

Donde runner.bat llama al archivo .bat principal

Debería ver todas las acciones realizadas en el archivo .bat principal ahora

Esta es la respuesta correcta.

 command /y /C myfile.bat 

o comando / y / k myfile.bat / y Pasos a través del progtwig por lotes especificado por / C o / K. (Solo disponible en MS-DOS 6.xy versiones posteriores). / c Pasos por el progtwig por lotes especificado por / C o / K. (Solo disponible en MS-DOS 6.xy versiones posteriores).

Quizás desee agregar otros parámetros, como / z para

No funciona para sistemas por debajo de dos 6 o superiores a Windows 98. Tampoco creo que funcione para windows nt pre 2000..

Instalé msdos 7.1 en virtualbox para verificar.

o, abra una ventana de cmd, luego llame al lote desde allí, la salida estará en la pantalla.