AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Wann funktioniert eine Batchdatei nicht?

Wann funktioniert eine Batchdatei nicht?

Ein Thema von Alallart · begonnen am 25. Jul 2023 · letzter Beitrag vom 26. Jul 2023
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#1

AW: Wann funktioniert eine Batchdatei nicht?

  Alt 25. Jul 2023, 22:57
Ich kann mir sparen den Code hier zu veröffentlichen, denn ich erkenne keinen Fehler.
Der Satz ist falsch formuliert! Es muss heißen: Kann mal jemand meinen Code überprüfen, denn ich erkenne keinen Fehler.

Ernsthaft: Wenn du einen Fehler erkennen würdest, hättest du hier gar nicht geschrieben.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Alallart

Registriert seit: 8. Dez 2015
172 Beiträge
 
#2

AW: Wann funktioniert eine Batchdatei nicht?

  Alt 26. Jul 2023, 05:59
Also gut, der Code der Batchdatei Test3.bat lautet
Code:
rar.exe a -r "Bak\Uebungen.rar" -ep1 "D:\Schulung\Mathe Neu\Übungen für Mathekurs"
Die Ausgabe ist:
Code:
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
Manchmal wird auch nichts ausgegeben, manchmal dieser Text.

Erstelle ich eine Datei mit dem Namen Test3.lst und füge dort als einzigen Inhalt diesen Pfad
Code:
"D:\Schulung\Mathe Neu\Übungen für Mathekurs"
und ändere den Batchcode in
Code:
rar.exe a -r "Bak\Uebungen.rar" -ep1 @Test3.lst
funktioniert es.

Übrigens, der Ordner Bak\ ist vorhanden.
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
793 Beiträge
 
#3

AW: Wann funktioniert eine Batchdatei nicht?

  Alt 26. Jul 2023, 06:42
Ein DOS Ü und ein Windows Ü sind unterschiedliche Zeichen...
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.054 Beiträge
 
Delphi 12 Athens
 
#4

AW: Wann funktioniert eine Batchdatei nicht?

  Alt 26. Jul 2023, 07:23
Den OEM Zeichensatz kann man z.B. in Notepad++ einstellen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.553 Beiträge
 
Delphi 12 Athens
 
#5

AW: Wann funktioniert eine Batchdatei nicht?

  Alt 26. Jul 2023, 08:36
š statt dem Ü

oder mal z.B. CHCP 850 (DOS-Latin I) oder CHCP 1252 (ANSI Latin I) als einen der ersten Befehle ausprobieren.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Alallart

Registriert seit: 8. Dez 2015
172 Beiträge
 
#6

AW: Wann funktioniert eine Batchdatei nicht?

  Alt 26. Jul 2023, 14:32
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:
echo Übüngen mit ä Ä ö Ö ü Ü ß
raus kam
Code:
▄b³ngen mit õ ─ ÷ Í ³ ▄ ▀
Problem ist klar.

Dennoch, es ist nicht das erste Mal, wo ich in einer Batchdatei Umlaute verwendet habe. Das Problem ist noch nie vorgekommen.
  Mit Zitat antworten Zitat
Alallart

Registriert seit: 8. Dez 2015
172 Beiträge
 
#7

AW: Wann funktioniert eine Batchdatei nicht?

  Alt 26. Jul 2023, 21:37
š statt dem Ü
Die Idee ist ok, das würde den Code aber unleserlich machen.

oder mal z.B. CHCP 850 (DOS-Latin I) oder CHCP 1252 (ANSI Latin I) als einen der ersten Befehle ausprobieren.
CHCP 850 macht schon den Job und aktiviert die Codepage auf 850, das ändert nur nichts am Problem der Batchdatei. Welche Codepage wendet der Notepad von Windows? Ich denke 850, denn es ändert sich nichts.

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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.553 Beiträge
 
Delphi 12 Athens
 
#8

AW: Wann funktioniert eine Batchdatei nicht?

  Alt 26. Jul 2023, 22:56
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 MSDN-Library durchsuchenSetFileApisToOEM, MSDN-Library durchsuchenSetFileApisToANSI und MSDN-Library durchsuchenAreFileApisANSI,
sowie MSDN-Library durchsuchenSetConsoleCP und MSDN-Library durchsuchenSetConsoleOutputCP.
[add] https://learn.microsoft.com/en-us/wi...tfileapistooem, falls es jemand übersieht.





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.
Das ist garnicht so ungewöhnlich, denn es wird ja in der "aktuellen" Codepage eingelesen und in der "selben" Codepage auch wieder ausgegeben.
Passiert auch mit Output/Input von DIR und Co.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (26. Jul 2023 um 23:08 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:16 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