GELÖST Umlaute bei der Ausführung einer Batch-Datei richtig anzeien

Diskutiere Umlaute bei der Ausführung einer Batch-Datei richtig anzeien im Programmierung Forum im Bereich Programmierung; Hallo Ich beschäftige mich seit einer Weile mit Batch-Scripten und jeder, der das auch tut oder getan hat, kennt das nervige Problem, dass der...
#1
P

Palladin007

Threadstarter
Dabei seit
30.07.2011
Beiträge
159
Hallo

Ich beschäftige mich seit einer Weile mit Batch-Scripten und jeder, der das auch tut oder getan hat, kennt das nervige Problem, dass der Befehlsinterpreter keine Umlaute anzeigen kann, wenn sie einfach so eingegeben werden.

Da hab ich mir einen Lösungsweg gesucht:

Code:
echo off
chcp 1252>nul 
set ue=ü
set ae=ä
set oe=ö
set Uue=Ü
set Aae=Ä
set Ooe=Ö
set ss=ß
chcp 850>nul 
echo Sch%oe%n, dass Herr M%ller das %bungsbeispiel ist
pause
Das muss dann immer an den Anfang jeder Bat-Datei, damit es funktioniert.

Doch das immer davor zu schreiben und auch immer die Variablen zu nutzen ist ziemlich nervig und deswegen habe ich zwei Fragen:

1.

Den Teil:

Code:
chcp 1252>nul 
set ue=ü
set ae=ä
set oe=ö
set Uue=Ü
set Aae=Ä
set Ooe=Ö
set ss=ß
chcp 850>nul
Würde ich gerne als extra Datei irgendwo im System fest legen und mir dann eine einzige Zeile aufschreiben, die ich in jeder Batch-Datei rein schreibe. Diese Zeile würde dann die Variablen aus der Datei, die die Umlaute enthält, für den weiteren Verlauf der Batch-Datei fest legen.

Das hätte dann den Zweck, dass ich am Anfang nur fest legen muss, immer die "Umlaut-Datei" mit zuverwenden und im weiteren Verlauf reicht es, wenn ich die Variablen eintippe.

Doch wie mach ich das? Ich weis nicht, wie ich Variablen aus einer anderen Datei verwenden kann.



Oder gibt es eine Möglichkeit, einen neuen Befehl zu definieren? Dann könnte man das alles in diesem neuen und selbst definierten Befehl fest legen und diesen Befehl schreibt man dann einfach an den Anfang jeder bat-Datei.



2.

Da es ja wohl kaum möglich sein sollte, eine Variable ohne % zu verwenden, muss ich bei jeder Text-Eingabe immer z. B. % schreiben, um ü zu bekommen.

Da ich aber sehr schnell schreibe, übersehe ich die Umlaute oft und dann muss ich das immer nachträglich ändern.

Deswegen brauche ich ein kleines Programm, was eine bat-Datei durchsuchen kann und entsprechende Umlaute mit der dazu gehörigen Variable vertauscht.

Aber wie kann ich eine bat-Datei eine andere Datei verändern lassen?
 
Zuletzt bearbeitet:
#2
P

Palladin007

Threadstarter
Dabei seit
30.07.2011
Beiträge
159
Ich hab jetzt schon selber eine Lösung für Punkt 1 gefunden. Ziemlich einfach, das mit call zu machen. Jetzt hab ich das in einer extra Datei und ruf das dann mit einer einfachen Call-Zeile ab.


Aber Punkt 2 hab ich noch keine Lösung -.-
 
#3
S

smiffle

Dabei seit
10.08.2008
Beiträge
494
2.

Da es ja wohl kaum möglich sein sollte, eine Variable ohne % zu verwenden, muss ich bei jeder Text-Eingabe immer z. B. % schreiben, um ü zu bekommen.

Da ich aber sehr schnell schreibe, übersehe ich die Umlaute oft und dann muss ich das immer nachträglich ändern.

Deswegen brauche ich ein kleines Programm, was eine bat-Datei durchsuchen kann und entsprechende Umlaute mit der dazu gehörigen Variable vertauscht.

Aber wie kann ich eine bat-Datei eine andere Datei verändern lassen?
Mit welchem Programm erstellst du die Batch-Dateien?
Wenn ich mich recht entsinne - ich habe schon lange nicht mehr mit Batch-Dateien gearbeitet - kommt es zu diesem Problem, wenn man Batch-Dateien z.B. mit dem Notepad von Windows erstellt. Mit der guten alten edit.com geht es glaube ich - hängt wohl mit vom jeweiligen Programm benutzten Zeichensatz zusammen.
 
#4
P

Palladin007

Threadstarter
Dabei seit
30.07.2011
Beiträge
159
Mit dem einfachen Text-Editor.

Bei komplizierteren Programmen nehme ich den Java-Editor Joe, weil der z.B. bei Klammern das Gegenstück einer Klammer markiert. Ist bei if ziemlich hilfreich.
 
#5
Quant

Quant

Dabei seit
19.07.2011
Beiträge
67
zu 1. würde ich auch mit call machen
zu 2. da hast du mit rein Bat-Dateien keine Chance, schätze ich, aber nachdem du scripten so gerne hast, würde ich vorschlagen, du schreibst dir ein kleines vbs-Script, dass das erledigt, das Script kannst du dann mit wscript Test.vbs das Script aus der Batch raus starten (Vorsicht, eine gerade durch cmd.exe geöffnete Datei kann meineswissens nicht modifiziert werden!).
(auch kann man mit:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.run "Batch1.cmd", 0, true
wieder eine Batch starten)
 
#6
Zyndstoff

Zyndstoff

Dabei seit
26.10.2010
Beiträge
2.445
Alter
57
Ort
BERLIN
Wie das geht, das ist mir wurscht, aber ich möchte doch mindestens darauf hinweisen, dass im Deutschen nicht jedes Doppel-s (ss) mit einem ß gleichzusetzen ist.

Die Maße / die Masse,
das Rußen / die Russen
die Buße / die Busse
und natürlich auch
das / dass

möchte ich als kleine Beispielauswahl hier anfügen.

Insofern ist der Befehl set ss=ß unter dem mir persönlich wichtigem Aspekt der Rechtschreibung nicht wirklich zielführend.

Nebenbei: bei der Anwendung deiner Regeln wird der Baür aber auf Daür saür!

In dem Sinne,
Zyndstoff
 
#7
P

Palladin007

Threadstarter
Dabei seit
30.07.2011
Beiträge
159
Wie das geht, das ist mir wurscht, aber ich möchte doch mindestens darauf hinweisen, dass im Deutschen nicht jedes Doppel-s (ss) mit einem ß gleichzusetzen ist.

Die Maße / die Masse,
das Rußen / die Russen
die Buße / die Busse
und natürlich auch
das / dass

möchte ich als kleine Beispielauswahl hier anfügen.

Insofern ist der Befehl set ss=ß unter dem mir persönlich wichtigem Aspekt der Rechtschreibung nicht wirklich zielführend.

Nebenbei: bei der Anwendung deiner Regeln wird der Baür aber auf Daür saür!

In dem Sinne,
Zyndstoff
Klar ist das in der deutschen Sprache so, aber es geht ja nicht darum, was in der Datei an Text geschrieben steht, sondern darum, was am Ende bei der Ausführung angezeigt wird.
Und wenn ich Maße schreibe, füge ich ja nicht einfach ss ein, sondern %ss%, damit das dann auch erkannt wird und auch als ? angezeigt wird.

Nebenbei: bei der Anwendung deiner Regeln wird der Baür aber auf Daür saür!
Wie meinst du das? Dass das einfach nervig ist, das zu verwenden?
 
#8
Zyndstoff

Zyndstoff

Dabei seit
26.10.2010
Beiträge
2.445
Alter
57
Ort
BERLIN
Ne... lass gut sein, ich habe da, glaube ich, eine kleine mentale Verwirrung gehabt.

Sorry. :D

Ist alles okay, ich stand auf dem Schlauch...
 
#9
P

Palladin007

Threadstarter
Dabei seit
30.07.2011
Beiträge
159
Nicht schlimm^^
 
#10
Quant

Quant

Dabei seit
19.07.2011
Beiträge
67
Wie das geht, das ist mir wurscht, aber ich möchte doch mindestens darauf hinweisen, dass im Deutschen nicht jedes Doppel-s (ss) mit einem ß gleichzusetzen ist.

Die Maße / die Masse,
das Rußen / die Russen
die Buße / die Busse
und natürlich auch
das / dass

möchte ich als kleine Beispielauswahl hier anfügen.

Insofern ist der Befehl set ss=ß unter dem mir persönlich wichtigem Aspekt der Rechtschreibung nicht wirklich zielführend.

Nebenbei: bei der Anwendung deiner Regeln wird der Baür aber auf Daür saür!

In dem Sinne,
Zyndstoff
Naja in einem solchen Fall hilft nur ein Algorithmus wie Levenstein, bzw. jedes mal nachfragen
 
#11
Quant

Quant

Dabei seit
19.07.2011
Beiträge
67
Also ich hab jetzt mal ein kleines VBS-"Programm" geschrieben (eigentlich hauptsächlich nur um zu testen, wie gut ich vbs noch kann, habs halt lang nicht mehr gemacht.) Das ließt alle bat Dateien in dem Verzeichniss ein, in dem es sich befinder und gibt dann in einer Msgbox aus, wie die Dateien geändert werden müssten, wenn ich die Replacements die oben beschrieben worden sind richtig verstanden habe. Im Prinzip ist das doch was du wolltest, einfach mithilfe von Notepad.exe den Codeinhalt in einer irgendeinDateiname.vbs (.vbs ist wichtig) speichern. Der Code muss eigentlich bloß noch um die Speicherroutine erweitert werden, aber die Mühe mach ich mir heute zumindest nicht mehr.

Code:
' Alle Batch Dateien des aktuellen Verzeichnisses herausfinden

Set Ordner = CreateObject("Scripting.FileSystemObject")
Set OrdnerInhalt = Ordner.GetFolder(Ordner.getparentfoldername(Wscript.ScriptFullName))
Set Bat = OrdnerInhalt.Files

' Für jede Datei (es werden keine Ordner und Unterordner durchlaufen)

Set rw = CreateObject("Scripting.FileSystemObject")	' einen Read/Writer für später

For Each i in Bat
 If Right(i, 3) = "bat" Then
 	' Code, der für jede Datei gemacht wird

	' als erstes Mal die Datei auslesen

	Set BatDateiInhalt = rw.OpenTextFile(i)
	
	Do While BatDateiInhalt.AtEndOfStream <> true

		bearb = BatDateiInhalt.ReadLine			' und die entsprechenden Zeichen durch die Variablennamen ersetzen
		bearb = Replace(bearb, "ü", "%ue%", 1, -1, intSearch)
		bearb = Replace(bearb, "ä", "%ae%", 1, -1, intSearch)
		bearb = Replace(bearb, "ö", "%oe%", 1, -1, intSearch)
		bearb = Replace(bearb, "Ü", "%Uue%", 1, -1, intSearch)
		bearb = Replace(bearb, "Ä", "%Aae%", 1, -1, intSearch)
		bearb = Replace(bearb, "Ö", "%Ooe%", 1, -1, intSearch)
		bearb = Replace(bearb, "ß", "%ss%", 1, -1, intSearch)
		
		If result = "" Then						' den bearbeiteten String dranhängen
							result = bearb
		Else
							result = result + vbnewline + bearb
		End If
		
	Loop
	
	BatDateiInhalt.Close

	Call Msgbox(result)

' beziehungsweiße Speicherroutine einfügen, die den ursprünglichen Dateiinhalt
' löscht und dafür den Inhalt der Variable result reinspeichert

	' Variablen für die nächste Datei reseten
	result = ""

 End if
next
 
#12
P

Palladin007

Threadstarter
Dabei seit
30.07.2011
Beiträge
159
Also ich hab jetzt mal ein kleines VBS-"Programm" geschrieben (eigentlich hauptsächlich nur um zu testen, wie gut ich vbs noch kann, habs halt lang nicht mehr gemacht.) Das ließt alle bat Dateien in dem Verzeichniss ein, in dem es sich befinder und gibt dann in einer Msgbox aus, wie die Dateien geändert werden müssten, wenn ich die Replacements die oben beschrieben worden sind richtig verstanden habe. Im Prinzip ist das doch was du wolltest, einfach mithilfe von Notepad.exe den Codeinhalt in einer irgendeinDateiname.vbs (.vbs ist wichtig) speichern. Der Code muss eigentlich bloß noch um die Speicherroutine erweitert werden, aber die Mühe mach ich mir heute zumindest nicht mehr.
Ok, was ist vbs? :D

Und wenn meine Datein die Endung .vbs haben müssen, ist das ziemlich blöd. Kann man das da drin nicht irgendwie ändern? Oder eine Auswahl ermöglichen?

Oder hängt das (wie bei bat und dem call-Befehl) zusammen?

Und wenn ja, dann reicht es auch, wenn ich nur die Datei-Endung ändere, oder?
 
Zuletzt bearbeitet von einem Moderator:
#13
Zyndstoff

Zyndstoff

Dabei seit
26.10.2010
Beiträge
2.445
Alter
57
Ort
BERLIN
vbs = Visual Basic.

Und nicht die zu bearbeitenden Dateien müssen .vbs Endungen haben, sondern die Datei, in der der obige Code gespeichert ist, damit er ausführbar ist.
 
#14
P

Palladin007

Threadstarter
Dabei seit
30.07.2011
Beiträge
159
vbs = Visual Basic.

Und nicht die zu bearbeitenden Dateien müssen .vbs Endungen haben, sondern die Datei, in der der obige Code gespeichert ist, damit er ausführbar ist.
Achso, ja das ist klar^^


Gut, dann hoff ich noch, dass er bald den Teil zum Speichern mit einbaut und probiere es dann freudig aus^^
 
#18
Quant

Quant

Dabei seit
19.07.2011
Beiträge
67
So ist fertig, 3 Zeilen und auch das Speichern ist drin. Klappt bei mir tadellos, allerdings würde ich dir empfehlen die folgenden Batch-Zeilen
Code:
chcp 1252>nul 
set ue=ü
set ae=ä
set oe=ö
set Uue=Ü
set Aae=Ä
set Ooe=Ö
set ss=ß
chcp 850>nul
erst nach dem ausführen der vbs-Datei einzufügen, sonst sieht das nämlich dann so aus:
Code:
chcp 1252>nul 
set ue=%ue%
set ae=%ae%
set oe=%oe%
set Uue=%Uue%
set Aae=%Aae%
set Ooe=%Ooe%
set ss=%ss%
chcp 850>nul
also dann, viel Spaß mit dem Code (nicht vergessen, die Visual Basic Script-Datei in einer Datei mit der Endung vbs. speichern (mit einem Editor und nicht mit Word oder ähnlichem speichern), mit einem Editor ist sie jedoch immer editierbar, sodass du da selbst eigene Zusatzfunktionen einbauen kannst):

Code:
' Alle Batch Dateien des aktuellen Verzeichnisses herausfinden

Set Ordner = CreateObject("Scripting.FileSystemObject")
Set OrdnerInhalt = Ordner.GetFolder(Ordner.getparentfoldername(Wscript.ScriptFullName))
Set Bat = OrdnerInhalt.Files

' Für jede Datei (es werden keine Ordner und Unterordner durchlaufen)

Set rw = CreateObject("Scripting.FileSystemObject")	' einen Read/Writer für später

For Each i in Bat
 If Right(i, 3) = "bat" Then
 	' Code, der für jede Datei gemacht wird

	' als erstes Mal die Datei auslesen

	Set BatDateiInhalt = rw.OpenTextFile(i)
	
	Do While BatDateiInhalt.AtEndOfStream <> true

		bearb = BatDateiInhalt.ReadLine			' und die entsprechenden Zeichen durch die Variablennamen ersetzen
		bearb = Replace(bearb, "ü", "%ue%", 1, -1, intSearch)
		bearb = Replace(bearb, "ä", "%ae%", 1, -1, intSearch)
		bearb = Replace(bearb, "ö", "%oe%", 1, -1, intSearch)
		bearb = Replace(bearb, "Ü", "%Uue%", 1, -1, intSearch)
		bearb = Replace(bearb, "Ä", "%Aae%", 1, -1, intSearch)
		bearb = Replace(bearb, "Ö", "%Ooe%", 1, -1, intSearch)
		bearb = Replace(bearb, "ß", "%ss%", 1, -1, intSearch)
		
		If result = "" Then						' den bearbeiteten String dranhängen
							result = bearb
		Else
							result = result + vbnewline + bearb
		End If
		
	Loop
	
	BatDateiInhalt.Close

	' result-String speichern

	set Datei = rw.CreateTextFile(i , true) 
	Datei.WriteLine result
	Datei.close

	' Variablen für die nächste Datei reseten
	result = ""

 End if
next
 
#19
P

Palladin007

Threadstarter
Dabei seit
30.07.2011
Beiträge
159
also dann, viel Spaß mit dem Code (nicht vergessen, die Visual Basic Script-Datei in einer Datei mit der Endung vbs. speichern (mit einem Editor und nicht mit Word oder ähnlichem speichern), mit einem Editor ist sie jedoch immer editierbar, sodass du da selbst eigene Zusatzfunktionen einbauen kannst
Code:
Super, danke :)

Aber ich kann da eh nichts ändern, ich kann jetzt nur frei schreiben und muss dann nicht immer die Variablen einbauen.

Und die Befehlszeilen für die Umlaute schreib ich eh nicht rein, da ich das in meiner Sammlung habe. Ich verlinke die nur mit call, dann geht das auch super.^^


Edit: Grad getestet, es funktioniert wirklich wunderbar und schnell^^
Ich war erst ein bisschen iritiert, weil nix passiert ist, als ich sie gestartet hab, aber da war da Programm schon fertig^^
 
Thema:

Umlaute bei der Ausführung einer Batch-Datei richtig anzeien

Sucheingaben

batch umlaute

,

cmd Datei mit Umlauten lesen

,

batch commands umlaute

,
umlaute batch datei
, batch echo sonderzeichen, msgbox umlaute, cmd dateiname umlaute problem, umlaute in batch, umlaute windows bat datei pfad, vbs umlaute, dos code ü vbs replace, windows console pfade Umlaute, batch datei Umlaute, ü batch, dos win10 edit.com umlaute, batch datei sonderzeichen, batch cmd umlaute richtig ausgeben, umlauts batch call, eingabeaufforderung skript umlaut edit.com, windows script umlaute, windows script umlaute datei nicht gefunden, windows 7 cmd umlaute, sonderzeichen batch datei editor, batch chcp, batch umlaute in verzeichnisnamen

Umlaute bei der Ausführung einer Batch-Datei richtig anzeien - Ähnliche Themen

  • Falsche Darstellung von Umlauten wie z.B.: ö wird als ö dargestellt

    Falsche Darstellung von Umlauten wie z.B.: ö wird als ö dargestellt: Hallo, Auf unserem neuen PC für unsere Tochter habe ich 2 User eingerichtet. Verwaltung läuft unter Microsoft Family, wo ich auch diverse...
  • Hieroglyphen bei Umlauten

    Hieroglyphen bei Umlauten: Wenn ich eine Mailvon Windows Live Mail drucken will, erscheinen Umlaute, also äöü als Hieroglyphen wie 1/4 Umgekehrtes ? oder ! oder auch...
  • Hieroglyphen bei Umlauten

    Hieroglyphen bei Umlauten: Wenn ich eine Mailvon Windows Live Mail drucken will, erscheinen Umlaute, also äöü als Hieroglyphen wie 1/4 Umgekehrtes ? oder ! oder auch...
  • Problem beim Schreiben vom Umlauten auf einem US-Amerikanischem Surface Book

    Problem beim Schreiben vom Umlauten auf einem US-Amerikanischem Surface Book: Hallo zusammen! Ich habe vorgestern von meinem Onkel mein Surface Book geschenkt bekommen und nach einiger weile bemerkt das nicht wie beim...
  • ae, oe, ue umlaute Windowos 10

    ae, oe, ue umlaute Windowos 10: Hallo, seit ca. 1 Woche gehen meine Umlaute ae, oe, ue nicht mehr einfach von heute auf morgen, manchmal gehen sie und weiß nicht warum, oder...
  • Ähnliche Themen

    • Falsche Darstellung von Umlauten wie z.B.: ö wird als ö dargestellt

      Falsche Darstellung von Umlauten wie z.B.: ö wird als ö dargestellt: Hallo, Auf unserem neuen PC für unsere Tochter habe ich 2 User eingerichtet. Verwaltung läuft unter Microsoft Family, wo ich auch diverse...
    • Hieroglyphen bei Umlauten

      Hieroglyphen bei Umlauten: Wenn ich eine Mailvon Windows Live Mail drucken will, erscheinen Umlaute, also äöü als Hieroglyphen wie 1/4 Umgekehrtes ? oder ! oder auch...
    • Hieroglyphen bei Umlauten

      Hieroglyphen bei Umlauten: Wenn ich eine Mailvon Windows Live Mail drucken will, erscheinen Umlaute, also äöü als Hieroglyphen wie 1/4 Umgekehrtes ? oder ! oder auch...
    • Problem beim Schreiben vom Umlauten auf einem US-Amerikanischem Surface Book

      Problem beim Schreiben vom Umlauten auf einem US-Amerikanischem Surface Book: Hallo zusammen! Ich habe vorgestern von meinem Onkel mein Surface Book geschenkt bekommen und nach einiger weile bemerkt das nicht wie beim...
    • ae, oe, ue umlaute Windowos 10

      ae, oe, ue umlaute Windowos 10: Hallo, seit ca. 1 Woche gehen meine Umlaute ae, oe, ue nicht mehr einfach von heute auf morgen, manchmal gehen sie und weiß nicht warum, oder...
    Oben