Pregunta

¿Hay una manera de pasar por 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 que se llaman, para que pueda saber exactamente dónde debo ir y agregar mis modificaciones .

¿Fue útil?

Solución

No sé de ninguna manera para avanzar en la ejecución de un archivo .bat, pero puede usar echo y pause para ayudar con la depuración.

  

ECHO
  Se hará eco de 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 por lotes también obtendrá " ECHO Hello World " y "Hello World". Finalmente, si solo desea crear una línea en blanco, escriba ECHO. al agregar el período al final se crea una línea vacía.

     

PAUSA
  Indica 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: Consejos para el archivo por lotes de DOS

Otros consejos

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 activado el eco, el intérprete de comandos emitirá cada comando (después del procesamiento de parámetros) antes de ejecutarlo. Hace que se vea realmente mal para su uso en producción, pero es muy útil para fines de depuración, ya que puede ver dónde se produjo un error en la salida.

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

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

JPSoft " Tomar el mando " 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:

  • 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 se bloquea y tuve que matarlo ... especialmente al depurar subíndices (no siempre de forma sistemática) ... no muestra una "pila de llamadas". ni un " salir " botón.

Deverved a try.

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 entorno.

La versión de evaluación solo permite pasar por 50 líneas ... ¿Alguien tiene una alternativa gratuita con una funcionalidad similar?

rem el @ECHO OFF y llame a su archivo por lotes redirigiendo TODOS los resultados 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 olvides el 2 > & amp; 1 ...

WIZ

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

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

Debe asegurarse de que, en este caso, todos los demás scripts llamados también se estén registrando 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 que estaba en ese punto y puede asignar el tiempo de ejecución del script y el orden.

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 principal .bat

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top