Gibt es eine Möglichkeit, ein .bat-Skript zu durchlaufen? Die Sache ist, ich habe ein Build-Skript, das viele andere Skripte aufruft, und ich würde gerne sehen, in welcher Reihenfolge sie aufgerufen werden, damit ich weiß, wo genau ich vorgehen und meine Änderungen hinzufügen muss .
windows
batch-file
debugging
cmd
Vhaerun
quelle
quelle
Antworten:
Ich weiß sowieso nicht, wie ich die Ausführung einer .bat-Datei schrittweise durchführen soll, aber Sie können sie verwenden
echo
undpause
beim Debuggen helfen.Quelle: Batch-Datei-Hilfe
@ workmad3: answer enthält weitere gute Tipps für die Arbeit mit dem
echo
Befehl.Eine weitere hilfreiche Ressource ... DDB: Tipps für DOS-Batchdateien
quelle
Stellen Sie sicher, dass die Skripte keine "Echo aus" -Anweisungen enthalten, und rufen Sie nach dem Aufrufen jedes Skripts "Echo ein" auf, um alle fehlenden Anweisungen zurückzusetzen.
Der Grund dafür ist, dass der Befehlsinterpreter jeden Befehl (nach der Parameterverarbeitung) ausgibt, wenn das Echo eingeschaltet bleibt, bevor er ausgeführt wird. Lässt es für die Verwendung in der Produktion wirklich schlecht aussehen, ist aber für Debugging-Zwecke sehr nützlich, da Sie sehen können, wo die Ausgabe schief gelaufen ist.
Stellen Sie außerdem sicher, dass Sie die ErrorLevels überprüfen, die von den aufgerufenen Batch-Skripten und -Programmen festgelegt wurden. Denken Sie daran, dass hierfür in .bat-Dateien zwei verschiedene Methoden verwendet werden. Wenn Sie ein Programm aufgerufen haben, befindet sich die Fehlerstufe in% ERRORLEVEL%, während aus Batchdateien die Fehlerstufe in der Variablen ErrorLevel zurückgegeben wird und keine% um sie herum benötigt.
quelle
Angesichts ähnlicher Bedenken fand ich das folgende Tool mit einer trivialen Google-Suche:
JPSofts " Take Command " enthält eine Batchdatei-IDE / einen Debugger. Ihr kurzes Präsentationsvideo zeigt es gut.
Ich benutze die Testversion seit einigen Stunden. Hier ist meine erste bescheidene Meinung:
Es ist ein Versuch.
quelle
Always quote the most relevant part of an important link
. Ohne den Link löst sich diese Antwort auf, was wiederum wahrscheinlich in Ordnung ist, aber normalerweise passt diese Art von Ad-hoc-Vorschlag einer nicht getesteten, proprietären Software im Allgemeinen am besten in einen Kommentar. Fühlen Sie sich frei, es auch zu verlassen.Ich fand "Running Steps" -Software (Win32), die genau das tat, wonach ich suchte: http://www.steppingsoftware.com/
Sie können eine Bat-Datei laden, Haltepunkte setzen / durchgehen, während Sie die Ausgabe- und Umgebungsvariablen anzeigen.
Die Evaluierungsversion erlaubt nur das Durchlaufen von 50 Zeilen ... Hat jemand eine kostenlose Alternative mit ähnlichen Funktionen?
quelle
Entfernen Sie das @ECHO OFF und rufen Sie Ihre Batch-Datei Redirectin ALL-Ausgabe in eine Protokolldatei auf.
c:> yourbatch.bat (optionale Parameter)> yourlogfile.txt 2> & 1
gefunden unter http://www.robvanderwoude.com/battech_debugging.php
ES KLAPPT!! Vergessen Sie nicht die 2> & 1 ...
WIZ
quelle
Ich kann mir nur vorstellen, den Code mit
echo
s undpause
s zu besprühen .quelle
Haben Sie versucht, das Ergebnis in eine Datei umzuleiten? Wie auch immer.bat> log.txt
Sie müssen sicherstellen, dass in diesem Fall auch jedes andere aufgerufene Skript wie >> log.txt in der Datei protokolliert
Wenn Sie am Anfang und am Ende dieser Batchdatei ein Datum / T und eine Uhrzeit / T einfügen, erhalten Sie die Uhrzeit zu diesem Zeitpunkt und können die Laufzeit und Reihenfolge Ihres Skripts zuordnen.
quelle
Oder ... Rufen Sie Ihre Haupt-BAT-Datei aus einer anderen BAT-Datei auf und geben Sie das Ergebnis in eine Ergebnisdatei aus, d. H.
running.bat> mainresults.txt
Wobei running.bat die Hauptdatei .bat aufruft
Sie sollten jetzt alle in der .bat-Hauptdatei ausgeführten Aktionen sehen
quelle
Ein recht häufiges Problem ist, dass ein Batch-Skript durch Doppelklicken auf das entsprechende Symbol ausgeführt wird. Da die Hosting-
cmd.exe
Instanz Command Prompt ( ) auch dann beendet wird, ist es nicht möglich, potenzielle Ausgabe- und Fehlermeldungen zu lesen.Um solche Nachrichten zu lesen, ist es sehr wichtig, dass Sie explizit ein Eingabeaufforderungsfenster öffnen, zum entsprechenden Arbeitsverzeichnis wechseln und das Batch-Skript ausführen, indem Sie dessen Pfad / Namen eingeben.
quelle
Sie können
cmd \k
den Fehler am Ende Ihres Skripts anzeigen. Ihre Eingabeaufforderung wird nach Abschluss der Ausführung nicht geschlossenquelle
Oder öffnen Sie ein Cmd-Fenster und rufen Sie den Stapel von dort aus auf. Die Ausgabe wird auf dem Bildschirm angezeigt.
quelle