Ich habe einige große Batchdateien geerbt und möchte sie in eine "entwicklungsfreundlichere" Sprache umschreiben.
Ich möchte die folgenden Dinge herausfinden:
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?
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.
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:
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.
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%
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. 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.
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.
Tags und Links winapi refactoring batch-file environment