Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge

DOS PROMPT Befehl... mit Batch-Quelldatei und Zeilennummer

Mdl / 5 Antworten / Flachansicht Nickles

Habe gerade in einem DOS-Batchfile, mit verschachtelten CALL-Aufrufen eine Fehlermeldung bekommen und muss jetzt mühsam die entsprechende Quelldatei/Zeile finden, in der dieser Fehler aufgetreten ist.

Dabei kam mir die Idee, dass doch eigentlich die Prompt-Funktion, d.h. der Text, der bei einer DOS-Eingabe als Prefix erscheint mir diese Information liefern könnte. Statt also z.B.   
  PROMPT $p$g
könnte so etwas wie
  PROMPT $%current_batchfile%$%current_batchline%$g
stehen.

Dieser Befehl dient nur zur Verdeutlichung, was ich eigentlich will. Dass dies genau so natürlich nicht funktioniert ist klar. Aber vielleicht  gibt es eine solche Funktionalität.

Dies wäre super-praktisch, weil man so direkt sehen würde, in welchem File und welcher Zeilennummer eine Fehlermeldung auftaucht.

Viele Grüße.
Mdl

bei Antwort benachrichtigen
xaver4 Mdl „Hallo Xaver, natürlich habe ich inzwischen bei meinen ...“
Optionen

Hi MdI,

was ich mit VARs in Prompt einbauen, verdeutlicht vielleich besser ein screenshot ...

Prompt
ich habe tatsächlich in einem 'abseitigen' Backup-Ordner noch alte batches aus W95/98-Zeiten gefunden, in denen ich Abfragen des errorlevels benutzt hatte:

z.B. #1 Fragt ab welches Laufwerk zugeordner werden soll:

  • @echo off
  • set key=
  • keytest.com
  • ******** Laufwerksbuchstabe erwartet *******
  • for %%z in (97 98 99 100 101 102 103 104 105 106 107 108 109 110 111) do if errorlevel %%z set key=%%z
  • for %%z in (112 113 114 115 116 117 118 119 120 121 122) do if errorlevel %%z set key=%%z
  • *** usw. mit ' if not exist "LW" usw ***

z.B. #2  Liest vorhandene Dateien zum Drucken in einem Ordner, Anz. d. Ausdrucke kann angegeben werden:

  • set ie=if errorlevel
  • set die= do %ie%
  • set str=0 1 2 3 4 5 6 7 8 9 10
  • ...
  • blabla (nacheinander die Druckdateien anzeigen)
  • ...
  • ******** call-Aufruf **** => Anzahl Ausdrucke? =>
  • ******** hier wird der errorlevel z.B. auf den Wert 10 getestet ***
  • ******** und 'n' übergeben ...
  • :chk
  • for %%n in (%str%)%die%%%n set n=%%n
  • if "%n%==10" set n=9
  • goto print
  • ...
  • blabla

Ich hatte deshalb gedacht, Du könntest auf ähnlichem Weg Dir eine Screenausgabe über den Prompt erzeugen (s. screenshot)

*** DOS-Box ? 'baust' du per batchaufruf alte games in windows ein?

vg

xaver

bei Antwort benachrichtigen