¿Hay alguna forma de recorrer un script .bat? La cuestión es que tengo un script de compilación, que llama a muchos otros scripts, y me gustaría ver cuál es el orden en el que se llaman, para saber exactamente dónde tengo que ir y agregar mis modificaciones. .
windows
batch-file
debugging
cmd
Vhaerun
fuente
fuente
Respuestas:
No conozco ninguna forma de recorrer la ejecución de un archivo .bat, pero puede usar
echo
ypause
para ayudar con la depuración.Fuente: Ayuda de archivo por lotes
@ workmad3: answer tiene más buenos consejos para trabajar con el
echo
comando.Otro recurso útil ... DDB: DOS Batch File Tips
fuente
Asegúrese de que no haya declaraciones de 'echo off' en los scripts y llame a 'echo on' después de llamar a cada script para restablecer los que haya perdido.
La razón es que si se deja el eco activado, el intérprete de comandos generará cada comando (después del procesamiento de parámetros) antes de ejecutarlo. Hace que se vea muy mal para su uso en producción, pero muy útil para fines de depuración, ya que puede ver dónde ha fallado la salida.
Además, asegúrese de verificar los ErrorLevels establecidos por los programas y scripts por lotes llamados. Recuerde que hay 2 métodos diferentes usados en archivos .bat para esto. Si llamó a un programa, el nivel de error está en% ERRORLEVEL%, mientras que de los archivos por lotes, el nivel de error se devuelve en la variable ErrorLevel y no necesita% alrededor.
fuente
Ante una preocupación similar, encontré la siguiente herramienta con una búsqueda trivial en Google:
" Take Command " de JPSoft incluye un archivo por lotes IDE / depurador. 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:
Deverves un intento.
fuente
Always quote the most relevant part of an important link
. Sin el enlace, esta respuesta se disuelve, lo que, de nuevo, probablemente esté bien, pero normalmente este tipo de sugerencia ad-hoc de un software propietario no probado generalmente encajaría mejor en un comentario. Siéntete libre de dejarlo también.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 recorrer 50 líneas ... ¿Alguien tiene una alternativa gratuita con una funcionalidad similar?
fuente
remueva el @ECHO OFF y llame a su archivo por lotes para redireccionar TODA la salida a un archivo de registro
c:> yourbatch.bat (parámetros opcionales)> yourlogfile.txt 2> & 1
que se encuentra en http://www.robvanderwoude.com/battech_debugging.php
¡¡FUNCIONA!! no olvides el 2> & 1 ...
FENÓMENO
fuente
La única forma en que puedo pensar es esparcir el código con
echo
s ypause
s.fuente
¿Intentó redirigir el resultado a un archivo? Como lo que sea.bat> log.txt
Debe asegurarse de que, en este caso, todos los demás scripts llamados 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 horas en ese momento y podrá asignar el tiempo y el orden de ejecución de su script.
fuente
O ... 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
fuente
Un problema bastante frecuente es que un script por lotes se ejecuta haciendo doble clic en su icono. Dado que la
cmd.exe
instancia de host Command Prompt ( ) también termina entonces, no es posible leer mensajes de error y de salida potenciales.Para leer dichos mensajes, es muy importante que abra explícitamente una ventana del símbolo del sistema, vaya al directorio de trabajo correspondiente y ejecute el script por lotes escribiendo su ruta / nombre.
fuente
puede utilizar
cmd \k
al final de su secuencia de comandos para ver el error. no cerrará su símbolo del sistema después de que se complete la ejecuciónfuente
o, abra una ventana de cmd, luego llame al lote desde allí, la salida estará en la pantalla.
fuente