joni2000de
Goto Top

batch Umlaute richtig darstellen

Hallo Admins,

ich stehe vor folgendem Rätsel. In einer Batchdatei steht die Zeile

f:\exe\run.exe P:\MäJ\Parameter.par

Diese Zeile wurde mit VBS erzeugt.

Wenn ich die Batchdatei jetzt aufrufe wird das ä in MäJ entweder als o mit Tilde (Codepage 1252) oder als § (Codepage 850) übergeben.

Ich hatte früher mal das Problem, dass die Werte nicht richtig in eine Datei geschrieben wurden, wenn die Codepage falsch war. Ausgelesen wurden diese dann richtig. Dieses Mal ist es umgekehrt. Die Werte werden richtig eingetragen aber falsch ausgelesen.

Kennt jemand das Problem und wie konnte es gelöst werden.

Danke für euer Hilfe.

Gruß Joni

Content-Key: 126508

Url: https://administrator.de/contentid/126508

Printed on: April 26, 2024 at 10:04 o'clock

Member: rubberman
rubberman Oct 05, 2009 at 22:26:25 (UTC)
Goto Top
Hallo joni2000de,

dazu fällt mir nur ein, dass dein VBScript ein paar Zeilen mehr ausgeben müsste:
chcp 1252>nul
set "aufruf=f:\exe\run.exe P:\MäJ\Parameter.par"  
chcp 850>nul
%aufruf%

Grüße
rubberman
Member: joni2000de
joni2000de Oct 06, 2009 at 13:13:45 (UTC)
Goto Top
Hallo Rubberman,

habe deine Anregung übernommen erhalte jetzt aber die Fehlermeldung "Funktion nicht definiert".

Wie schaut hier die Definition aus?

Danke

Gruß Joni
Member: rubberman
rubberman Oct 06, 2009 at 22:07:16 (UTC)
Goto Top
Hallo joni2000de,

ehrlich gesagt kann ich nicht nachvollziehen, woher der Fehler kommt. Möglich wäre immerhin, dass entgegen deinem geposteten Schnipsel, die Pfade Leerzeichen enthalten. In dem Fall solltest du das ganze wie folgt abändern:
chcp 1252>nul
set aufruf="f:\exe\run.exe" "P:\MäJ\Parameter.par"  
chcp 850>nul
%aufruf%
und überprüfe, ob die Anführungszeichen im Batchcode auch tatsächlich in dieser Form erscheinen.

Grüße
rubberman

PS: Warum startest du das ganze nicht gleich aus dem VBScript? Die Run-Methode ist leicht zu bedienen.
Member: joni2000de
joni2000de Oct 07, 2009 at 10:12:27 (UTC)
Goto Top
Hallo Rubberman,

Leerzeichen sind im Pfad keine vorhanden.

Die Batchdatei wird mit folgendem Code erzeugt:

Open PFADIXHAUS & SBBATCH For Output As #1
Print #1, "f:"  
Print #1, PFADIXHAUS & "exe\ic7100.exe " & PFAD & USERNAME & "\" & PAR1 & PARAMETERDATEI  
Print #1, PFADIXHAUS & "exe\ic7100.exe " & PFAD & USERNAME & "\" & PAR2 & PARAMETERDATEI  
Print #1, PFADIXHAUS & "exe\ic7100.exe " & PFAD & USERNAME & "\" & PAR3 & PARAMETERDATEI  
Print #1, PFADIXHAUS & "exe\ic7100.exe " & PFAD & USERNAME & "\" & PAR4 & PARAMETERDATEI  
Print #1, PFADIXHAUS & "exe\ic7100.exe " & PFAD & USERNAME & "\" & PAR5 & PARAMETERDATEI  
Close #1

Dann sollte die Batchdatei aufgerufen werden. Wenn ich mit

USERNAME = Replace(USERNAME, "ä", "a")  

das ä ersetzen lasse funktioniert der Aufruf mit

Shell PFADIXHAUS & SBBATCH, vbHide

wie er sollte. Dabei ist das einzige Problem, dass der Ordner in dem die Dateien abgelegt werden nicht MäJ sonder MaJ heißt. Wenn es zu kompliziert wird, werde ich den Schönheitsfehler in Kauf nehmen.

Die Run-Methode habe ich auch schon probiert. Da erhalte ich einen Laufzeitfehler 424. Trotz längerem suchen bin ich da auch noch nicht auf die Lösung gekommen.

Die Batchdatei brauche ich, da der Aufruf von einem ganz bestimmten Ort aus erfolgen muss, da ansonsten die exe nicht funktioniert. Sonst wäre das nicht so kompliziert.

Gruß Joni
Member: rubberman
rubberman Oct 07, 2009 at 20:51:44 (UTC)
Goto Top
Hallo joni2000de,

du bist sicher, dass du von VBS redest und nicht von VB(A)? Naja egal.
Hast du das schon mal so versucht
Open PFADIXHAUS & SBBATCH For Output As #1
Print #1, "@echo off &setlocal"  
Print #1, "f:"  
Print #1, "chcp 1252>nul"  
Print #1, "set aufruf1=" & PFADIXHAUS & "exe\ic7100.exe " & PFAD & USERNAME & "\" & PAR1 & PARAMETERDATEI  
Print #1, "set aufruf2=" & PFADIXHAUS & "exe\ic7100.exe " & PFAD & USERNAME & "\" & PAR2 & PARAMETERDATEI  
Print #1, "set aufruf3=" & PFADIXHAUS & "exe\ic7100.exe " & PFAD & USERNAME & "\" & PAR3 & PARAMETERDATEI  
Print #1, "set aufruf4=" & PFADIXHAUS & "exe\ic7100.exe " & PFAD & USERNAME & "\" & PAR4 & PARAMETERDATEI  
Print #1, "set aufruf5=" & PFADIXHAUS & "exe\ic7100.exe " & PFAD & USERNAME & "\" & PAR5 & PARAMETERDATEI  
Print #1, "chcp 850>nul"  
Print #1, "%aufruf1%"  
Print #1, "%aufruf2%"  
Print #1, "%aufruf3%"  
Print #1, "%aufruf4%"  
Print #1, "%aufruf5%"  
Close #1

Grüße
rubberman
Member: joni2000de
joni2000de Oct 09, 2009 at 08:36:11 (UTC)
Goto Top
Hallo rubberman,

ich habe jetzt die Variante mit dem Ersetzen der Umlaute eingebaut. Das funktioniert soweit problemlos. Ich werde deine Variante bei Gelegenheit auch mal ausprobieren, kann aber noch etwas dauern.

Wie du richtigerweise festgestellt hast meinte ich VBA. Ich denke das sollte sich auf diesen Teil meiner Meinung nach jedoch nicht auswirken.

Auf jeden Fall vielen Dank für deine Hilfe.

Gruß Joni