Batchscript verhält sich seltsam (Ausgabe nicht korrekt)
Hallo.
1. Ich habe u.a. das Problem, dass ein von mir betreuter PC in einem DOS-Batchscript bei dem Abarbeiten des Befehls "pause" KEINE Ausgabe liefert, aber die Pause-Funktion trotzdem gegeben ist. (Es erscheint KEIN "Drücken Sie eine beliebige Taste . . .")
Es ist weder eine Umleitung nach NUL eingebaut noch sonst irgendetwas speziell eingestellt.
2. Zusätzlich ist mir aufgefallen, dass an diesem PC das Script abbricht, sobald ich Umlaute im Text drin habe.
Das sollte eigentlich kein Problem sein, da ich zu Beginn chcp auf 65001 setze.
3. Weiterhin werden Escapesequenzen (zur farbigen Ausgabe) nicht interpretiert, sondern statt der Escapesequenz die Ausgabe "Pfeil nach links"+"die Ziffern, die als Farbe ausgegeben werden sollen" angezeigt.
Ist meine Batch-Datei falsch codiert? Dann dürfte es aber auf den anderen zig PCs (über 250St.) auch nicht funktionieren.
Auf den anderen PCs funktioniert das Script einwandfrei und völlig unauffällig! (Mit Umlauten und Farben und ohne Abbruch!)
System ist überall Win10 64bit, Systemsprache deutsch.
Hat hier jemand ne Idee???
Gruß, Bodo08.
1. Ich habe u.a. das Problem, dass ein von mir betreuter PC in einem DOS-Batchscript bei dem Abarbeiten des Befehls "pause" KEINE Ausgabe liefert, aber die Pause-Funktion trotzdem gegeben ist. (Es erscheint KEIN "Drücken Sie eine beliebige Taste . . .")
Es ist weder eine Umleitung nach NUL eingebaut noch sonst irgendetwas speziell eingestellt.
2. Zusätzlich ist mir aufgefallen, dass an diesem PC das Script abbricht, sobald ich Umlaute im Text drin habe.
Das sollte eigentlich kein Problem sein, da ich zu Beginn chcp auf 65001 setze.
3. Weiterhin werden Escapesequenzen (zur farbigen Ausgabe) nicht interpretiert, sondern statt der Escapesequenz die Ausgabe "Pfeil nach links"+"die Ziffern, die als Farbe ausgegeben werden sollen" angezeigt.
Ist meine Batch-Datei falsch codiert? Dann dürfte es aber auf den anderen zig PCs (über 250St.) auch nicht funktionieren.
Auf den anderen PCs funktioniert das Script einwandfrei und völlig unauffällig! (Mit Umlauten und Farben und ohne Abbruch!)
System ist überall Win10 64bit, Systemsprache deutsch.
Hat hier jemand ne Idee???
Gruß, Bodo08.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 72210956659
Url: https://administrator.de/contentid/72210956659
Ausgedruckt am: 21.11.2024 um 10:11 Uhr
9 Kommentare
Neuester Kommentar
Versuch mal Farbcode wegzulassen, vielleicht ist ja schwarz auf schwarz warum auch immer
Farbcode mach ich immer so:
@echo on & Color 4f
Ist Rot/Weiss
0 = Schwarz 8 = Grau
1 = Blau 9 = Hellblau
2 = Grün A = Hellgrün
3 = Türkis B = Helltürkis
4 = Rot C = Hellrot
5 = Lila D = Helllila
6 = Gelb E = Hellgelb
7 = Hellgrau F = Weiß
Farbcode mach ich immer so:
@echo on & Color 4f
Ist Rot/Weiss
0 = Schwarz 8 = Grau
1 = Blau 9 = Hellblau
2 = Grün A = Hellgrün
3 = Türkis B = Helltürkis
4 = Rot C = Hellrot
5 = Lila D = Helllila
6 = Gelb E = Hellgelb
7 = Hellgrau F = Weiß
Moin,
Prüfe mal, ob der Befehl was ausspuckt:
Gruß Thomas
Zitat von @Bodo08:
1. Ich habe u.a. das Problem, dass ein von mir betreuter PC in einem DOS-Batchscript bei dem Abarbeiten des Befehls "pause" KEINE Ausgabe liefert, aber die Pause-Funktion trotzdem gegeben ist. (Es erscheint KEIN "Drücken Sie eine beliebige Taste . . .")
hast du schon überprüft, ob auf dem entsprechenden Rechner vielleicht Programme oder Skripte vorhanden sind, welche die genutzten Befehle überlagern? Etwa eine Pause.exe bzw. .cmd, .bat, .vbs, ...1. Ich habe u.a. das Problem, dass ein von mir betreuter PC in einem DOS-Batchscript bei dem Abarbeiten des Befehls "pause" KEINE Ausgabe liefert, aber die Pause-Funktion trotzdem gegeben ist. (Es erscheint KEIN "Drücken Sie eine beliebige Taste . . .")
Prüfe mal, ob der Befehl was ausspuckt:
where pause
Gruß Thomas
Zitat von @Bodo08:
Und wie bereits geschrieben, die Pause-Funktion besteht ja (Pause wird ausgeführt), es wird nur kein "Drücken Sie eine beliebige Taste . . ." angezeigt.
Schon klar, aber ein anderes Programm oder Skript hätte ja ebenfalls eine Pause ohne Ausgabe erzeugen können, somit war das damit immer noch nicht ausgeschlossen.Und wie bereits geschrieben, die Pause-Funktion besteht ja (Pause wird ausgeführt), es wird nur kein "Drücken Sie eine beliebige Taste . . ." angezeigt.
Und bei der Ausgabe von "echo äöü" gibt es auch keinen Befehl, der hier dazwischen grätscht.
Hast du das Skript denn mal aus der Konsole heraus gestartet? Wenn das Skript bei einem Umlaut abbricht, gibt es doch bestimmt eine Fehlermeldung...
Hallo,
Eindeutiges Indiz dafür, dass auf diesem PC die Legacy Konsole verwendet wird, ist die fehlende Unterstützung von VT Escape Sequenzen.
Rechtsklick auf die Titelleiste -> Standardwerte -> Tab "Optionen" -> Haken dafür rausnehmen.
CHCP 65001 hilft nur dann für das richtige Parsen des Scriptcodes, wenn das Script selbst UTF-8 codiert und ohne BOM gespeichert ist.
Und wenn du ggf. sowieso mit einem HEX Editor reinschaust, auch checken, ob Zeilenumbrüche im Windowsformat (0D 0A) und nicht im Unixformat (nur 0A) gesetzt sind.
Gibt es in der Registry unter "HKCU\Console" einen Unterschlüssel der wie der Pfad deiner Scriptdatei aussieht? Falls ja, löschen.
"HKCU\Software\Microsoft\Command Processor" bzw. "HKLM\Software\Microsoft\Command Processor" könnte einen "AutoRun" Wert enthalten, der automatisch ausgeführt wird, wenn die CMD gestartet wird. Gibt es so was und was steht drin?
In denselben Registry Schlüsseln könntest du "DelayedExpansion" mit Wert 1 finden. Falls ja, auf 0 setzen oder löschen. (Nicht mit "EnableExtensions" verwechseln!)
Prüfen ob in Pfaden der "%PATH%" Variable, die ggf. noch vor "C:\Windows\System32" stehen, ausführbare Dateien enthalten sind, die genauso heißen wie die Kommandozeilentools die du üblicherweise in einem Batchscript verwendest. Umsortieren der Pfade, sodass das System32 Verzeichnis als erstes in der Auflistung erscheint, ist nie eine schlechte Idee. (SystemPropertiesAdvanced.exe ausführen -> Tab "Erweitert" -> Umgebungsvariablen -> Systemvariablen -> Path anklicken -> Bearbeiten... -> "C:\Windows\System32" markieren -> so lange "Nach oben" bis es oben ist)
Grüße
Steffen
Eindeutiges Indiz dafür, dass auf diesem PC die Legacy Konsole verwendet wird, ist die fehlende Unterstützung von VT Escape Sequenzen.
Rechtsklick auf die Titelleiste -> Standardwerte -> Tab "Optionen" -> Haken dafür rausnehmen.
CHCP 65001 hilft nur dann für das richtige Parsen des Scriptcodes, wenn das Script selbst UTF-8 codiert und ohne BOM gespeichert ist.
Und wenn du ggf. sowieso mit einem HEX Editor reinschaust, auch checken, ob Zeilenumbrüche im Windowsformat (0D 0A) und nicht im Unixformat (nur 0A) gesetzt sind.
Gibt es in der Registry unter "HKCU\Console" einen Unterschlüssel der wie der Pfad deiner Scriptdatei aussieht? Falls ja, löschen.
"HKCU\Software\Microsoft\Command Processor" bzw. "HKLM\Software\Microsoft\Command Processor" könnte einen "AutoRun" Wert enthalten, der automatisch ausgeführt wird, wenn die CMD gestartet wird. Gibt es so was und was steht drin?
In denselben Registry Schlüsseln könntest du "DelayedExpansion" mit Wert 1 finden. Falls ja, auf 0 setzen oder löschen. (Nicht mit "EnableExtensions" verwechseln!)
Prüfen ob in Pfaden der "%PATH%" Variable, die ggf. noch vor "C:\Windows\System32" stehen, ausführbare Dateien enthalten sind, die genauso heißen wie die Kommandozeilentools die du üblicherweise in einem Batchscript verwendest. Umsortieren der Pfade, sodass das System32 Verzeichnis als erstes in der Auflistung erscheint, ist nie eine schlechte Idee. (SystemPropertiesAdvanced.exe ausführen -> Tab "Erweitert" -> Umgebungsvariablen -> Systemvariablen -> Path anklicken -> Bearbeiten... -> "C:\Windows\System32" markieren -> so lange "Nach oben" bis es oben ist)
Grüße
Steffen