![]() |
Wann funktioniert eine Batchdatei nicht?
Ich bin verwundert. Ich habe an die sechs Batchdateien, die ihren Dienst erfüllen. Gestern habe ich eine siebte erstellt. Und die funktioniert nicht. Keine Ahnung warum.
Ich kann mir sparen den Code hier zu veröffentlichen, denn ich erkenne keinen Fehler. Angefangen hat das damit, dass ich die alten Batchdateien etwas übersichtlicher machen wollte, weil einige Zeilen ultra lag waren (wegen Pfade), also speicherte ich die Pfade in Variablen, nach dem Motto %pfad1%, und verkürzte so meine langen Zeilen. Das klappte auch alles wunderbar, bis es bei der letzten Batchdatei nicht mehr funktionierte. Danach klappte nichts mehr. Die alten Batchdateien funktionieren immer noch, die neuen brechen sofort ab. Danach testete ich die letzte Batchdatei mit alten Einstellungen, funktioniert immer noch nicht. Dann alles auf das nötigste reduziert, klappt auch nicht. Also erstellte ich eine neue Batchdatei, mit einem neuen Namen. Es funktionierte. Ich erstellte wieder eine Batchdatei mit einem wieder anderen Namen "Test4.bat", es funktionierte nicht. Ich dachte zuerst es sind Umlaute im Namen. Sind es nicht. Auch nutze ich Anführungzeichen für Pfaden. Sonderbar, mal funktioniert es, mal nicht. Nicht das eine Batch mal funktioniert, mal nicht. Wenn sie funktioniert, dann immer. Wenn nicht, dann auch immer. Nur erkenne ich nicht den Grund. |
AW: Wann funktioniert eine Batchdatei nicht?
FileEncoding?
BOM? irgendein böse unsichtbares ControlChar? ... Zitat:
Du kannst auch Zeilen umbrechen.
Delphi-Quellcode:
^ als Letztes (ohne Leerzeichen danach)
echo das ist eine gaaaaanz ^
gaaaaaaaaaanz ^ lange Zeile Fehlerprüfung? Leider fehlt in CMD und auch im Terminal die Möglichkeit automatisch das letzte Result anzeigen zu lassen. :cry: Selbst mit ![]() z.B. ein
Delphi-Quellcode:
nach "jedem" möglicherweise fehlermeldendem Befehl.
@echo EXITCODE %errorlevel%
Code:
@if errorlevel 1 @echo ERROR %errorlevel%
@if %errorlevel% NEQ 0 @echo ERROR %errorlevel% ... PS: .BAT ist so altmodisch. Viele verwenden seit Jahren .CMD , mit dem selben Dateiinhalt. :angle: |
AW: Wann funktioniert eine Batchdatei nicht?
Zitat:
Ernsthaft: Wenn du einen Fehler erkennen würdest, hättest du hier gar nicht geschrieben. |
AW: Wann funktioniert eine Batchdatei nicht?
Also gut, der Code der Batchdatei Test3.bat lautet
Code:
Die Ausgabe ist:
rar.exe a -r "Bak\Uebungen.rar" -ep1 "D:\Schulung\Mathe Neu\Übungen für Mathekurs"
Code:
Manchmal wird auch nichts ausgegeben, manchmal dieser Text.
RAR 5.20 Copyright (c) 1993-2014 Alexander Roshal 2 Dec 2014
Trial version Type RAR -? for help Evaluation copy. Please register. Creating archive Bak\Uebungen.rar WARNING: No files Erstelle ich eine Datei mit dem Namen Test3.lst und füge dort als einzigen Inhalt diesen Pfad
Code:
und ändere den Batchcode in
"D:\Schulung\Mathe Neu\Übungen für Mathekurs"
Code:
funktioniert es.
rar.exe a -r "Bak\Uebungen.rar" -ep1 @Test3.lst
Übrigens, der Ordner Bak\ ist vorhanden. |
AW: Wann funktioniert eine Batchdatei nicht?
Ein DOS Ü und ein Windows Ü sind unterschiedliche Zeichen...
|
AW: Wann funktioniert eine Batchdatei nicht?
Den OEM Zeichensatz kann man z.B. in Notepad++ einstellen.
|
AW: Wann funktioniert eine Batchdatei nicht?
š statt dem Ü
oder mal z.B.
Delphi-Quellcode:
(DOS-Latin I) oder
CHCP 850
Delphi-Quellcode:
(ANSI Latin I) als einen der ersten Befehle ausprobieren.
CHCP 1252
|
AW: Wann funktioniert eine Batchdatei nicht?
Verstehe.
Die Idee mit dem Zeichensatz hatte ich auch selbst bereits, aber ich habe es mit den Standard Codierungen versucht. Zuerst mit dem Notepad, dann arbeite ich gerne noch mit dem TextPad, der bietet auch die Möglichkeit den Zeichensatz bei speichern einzustellen. Da das Problem immer vorkam, verwarf ich vorerst das als Fehlerquelle. Ich habe es getestet mit dem Code
Code:
raus kam
echo Übüngen mit ä Ä ö Ö ü Ü ß
Code:
Problem ist klar.
▄b³ngen mit õ ─ ÷ Í ³ ▄ ▀
Dennoch, es ist nicht das erste Mal, wo ich in einer Batchdatei Umlaute verwendet habe. Das Problem ist noch nie vorgekommen. |
AW: Wann funktioniert eine Batchdatei nicht?
Zitat:
Zitat:
Das interessante ist, dass der Ordner in dem die Batchdatei ausgeführt wird, selbst Umlaute enthält, und die werden in der Eingabeaufforderung korrekt dargestellt. Nur die Batchdatei scheint Probleme zu machen. |
AW: Wann funktioniert eine Batchdatei nicht?
Tja, du mußt einfach die selbe Codepage benutzen, mit welcher die Datei erstellt wurde,
oder andersrum in der selben Codepage schreiben, so wie es später wieder verarbeitet wird. Am Universellsten wäre z.B. eine UTF-8- oder UTF-16-Codepage. Gibst du aber keine Codepage an, dann wird eventuell die aktuelle Standardcodepage vom System benutzt. Und mit etwas Pech ist sie auf einem anderen PC nicht die Gleiche, wie bei dir gerade. PS: Das Selbe kannst du auch in einem Delphi-Consolen-Programm haben. Normal wird dort CP_ACP für AnsiString, ANSI-APIs, sowie Konsolen-Input/-Output genommen, also "standardmäßig" die aktuelle ANSI-Codepage des Systems/Benutzers. Man könnte auch CP_OEM benutzen, und hat dann das, was die BATCH standardmäßig benutzt. Bzw. siehe ![]() ![]() ![]() sowie ![]() ![]() [add] ![]() Zitat:
Passiert auch mit Output/Input von DIR und Co. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz