Gibt es eine Möglichkeit, die Ausführung einer Batch-Datei zu verfolgen?

8

Ich habe einige große Batchdateien geerbt und möchte sie in eine "entwicklungsfreundlichere" Sprache umschreiben.

Ich möchte die folgenden Dinge herausfinden:

  • welche anderen Skripte es nennt
  • was für andere Prozesse es beginnt
  • Welche Dateien schreibt es in
  • ?
  • Welche Umgebungsvariablen verwendet es, welche setzt es

Für den letzten Punkt bin ich mir bewusst, dass ich das tun kann, bevor ich beginne:

%Vor%

Und nachdem ich es ausgeführt habe, kann ich Folgendes tun:

%Vor%

und mache einfach einen Unterschied zwischen ihnen ... aber ich werde wahrscheinlich einige Variablen vermissen, die möglicherweise nicht gesetzt sind, wenn das Skript beendet ist (oder sogar alle, wenn das Skript unter setlocal lief).

Gibt es irgendeine Möglichkeit, all diese Dinge zu finden, ohne dass ich im Script-Code Tonnen von Echo-Anweisungen hinzufügen muss? Gibt es ein solches Tool, das den von der Batch-Datei gestarteten Prozess überwachen und mir alles sagen kann?

    
Geo 02.03.2010, 19:54
quelle

4 Antworten

2

Sie können einfach in sie hineinschauen und herausfinden, was sie tun.

Sie können auch% echo off -Anweisungen und @ vorhergehende Befehle entfernen; Auf diese Weise wird jeder Befehl ausgegeben, bevor er ausgeführt wird, und Sie können die Ausgabe in eine Datei umleiten, um sie später zu studieren.

Es gibt kein Debugging-Tool für Batch-Dateien, die mir bekannt sind - aber ich habe einmal darüber nachgedacht, es einmal zu schreiben.

    
Joey 02.03.2010 19:59
quelle
2

Es gibt keinen direkten Weg dazu. Aber es ist nicht unmöglich, einen zu erstellen.

Seit Windows XP / Vista / 7 herausgekommen ist, wurde der gute Satz von DOS-Batch-Befehlen stark verbessert, obwohl nicht viele sie oder sogar RTFM ( FOR /? ?) verwenden.

Also hier gebe ich Ihnen, eine einfache rein Batch-TRACER, die den FOR /F -Zeilen-Parsing-Schalter verwendet:

%Vor%

Sie können es als Anfang nehmen und ändern, wie Sie gehen.

So würden Sie es verwenden:

%Vor%

Und ich gebe dir auch eine Testdatei, um es auszuprobieren:

%Vor%

Dieses DEBUG.BAT Ding hat jedoch aufgrund seiner Einfachheit einige Einschränkungen ABER was man umgehen kann, wenn man genug BATCH-fu hineinschlägt.

  • Mehrzeilige Blöcke können nicht verarbeitet werden. :: Dies kann umgangen werden, indem die FOR -Befehle Token parsen und die Zeilen so erstellen, wie sie kommen, und IF nur eine offene Klammer dump den Klammern Block Inhalt in eine temporäre Datei und dann selbst auf der Tempdatei z %Code%
  • Sprünge können nicht verarbeitet werden. :: Sie können natürlich eine DEBUG tempfile.bat Prüfung für eine IF durchführen, dann eine GOTO label , um die Beschriftung selbst auszuwerten, dann verwenden Sie vielleicht das zweite Argument FOR /F von %2 , um das Label anzugeben, zu dem gesprungen werden soll. Wenn genau dieses Argument angegeben wird, dreht man einfach DEBUG.BAT , bis das gewünschte Label angezeigt wird, und fährt mit dem normalen Debugging in der nächsten Zeile fort.
  • Es gibt zu viele Informationen von einem einzelnen FOR /F :: Mach einfach, was du mit %%_de% und nach dem Ding getan hast, aber mach es in jeder Zeile und führe dann ein cmd-line DIFF-Werkzeug auf dem Dateien (viele sind im Internet verfügbar). Dann erhalten Sie ein DIFF für jede Variable, die seit dem letzten Schritt geändert wurde. Sie könnten sogar in der Lage sein, das env zu vermeiden. Variablen Chaos insgesamt durch Schlagen in SET und SET > before.txt drin und dann würden Sie nur die lokalen SETs bekommen ... aber YMMV.

Das sind einige. Wenn Sie bemerkenswerte Beschränkungen oder Verbesserungen gefunden haben, die Ihnen helfen könnten, den letzten Fehler zu beheben, können Sie sich gerne an mich wenden (über die Kommentare) und ich werde versuchen, Ihnen zu helfen, wenn ich kann.

Hoffe, das hilft.

    
chakrit 03.03.2010 19:01
quelle
1

Nein, es gibt keine Möglichkeit, Batchdateien im alten Stil zu debuggen. Sie können jedoch alle ECHO OFF -Anweisungen loswerden, und dann werden alle Befehle und Ausgaben an die Konsole gesendet, wenn Sie sie ausführen.

    
i_am_jorf 02.03.2010 19:59
quelle
1

Wenn Sie etwas Geld ausgeben möchten, sollten Sie sich die Laufschritte Batch-Datei IDE und seine Debugging-Fähigkeiten.

Ich habe es nicht getestet, aber es hat einige Funktionen, die Ihnen bei Ihrer Aufgabe helfen könnten:

  

...

     
  • Visual Studio-ähnliche Debugging-Umgebung.
  •   
  • Umfangreiche Debug-Befehle (schrittweise, schrittweise, schrittweise usw.)
  •   
  • Rich Project Analysator, um Ihre Fehler und Warnungen in kürzester Zeit zu finden.
  •   
  • Integrierte Unterstützung für verzögerte erweiterte Umgebung   Variablen.
  •   
  • Multi-Typ-Haltepunktdefinitionen, um Ihren verschiedenen Debug-Anforderungen zu entsprechen.
  •   
  • Komplexe Pipeline- und Umleitungsunterstützung mit mehrfarbiger Hervorhebung.
  •   
  • Visualisierung und Modifizierung von Umgebungsvariablen.
  •   
  • Erweitertes Informationsfenster für die Visualisierung echter Variablen.
  •   
  • Eindrucksvolle Funktion zum Abrollen von Befehlen.
  •   
  • Interaktives Callstack- und Parameterfenster.
  •   

...

Sie bieten auch eine Testversion an.

    
Frank Bollack 03.03.2010 10:52
quelle