Suchen und Ersetzen in .bat Datei mit Bedingung
Hallo zusammen,
wir exportieren aus einem Programm heraus Dateien die eine bestimmte Formatierung haben damit Sie auf einer Website der spanischen Polizei richtig eingelesen werden können. Es sind Meldelisten von unseren Hotelgästen. Da unser Programm in Deutsch ist und die Spanier aber gerne alles in Spanisch haben möchten habe ich eine batch Datei mit einem VB Script was die deutschen Ländernamen durch spanische ersetzt.
Die formatierten Zeilen in der Datei sehen wie folgt aus:
Nur zur Nachvollziehbarkeit:
Jetzt haben wir das Problem dass unser Programm für den Export nur die Ausweistypen "P" und "I" kennt, das ist bei fast allen Ländern auch in Ordnung, bis auf SPANIEN.
Die Spanier müssen als Ausweistyp ein "D" dort stehen haben, sprich aus:
müsste
gemacht werden.
Ist es möglich eine Abfrage da rein zu basteln die abfragt wenn in einer Zeile |ESPAÑA| steht, in der gleichen Zeile das |I| durch |D| ersetzt werden soll?!
Hier mein bereits vorhandenes Script:
@echo off & setlocal
set "Datei=Z:\Jandarma\18685AAH01.036"
set R=%temp%\Replace5.vbs
...
for %%f in ("%Datei%") do cscript //nologo %R% "%%f"
Hoffe mir kann jemand helfen.
Vielen Dank
wir exportieren aus einem Programm heraus Dateien die eine bestimmte Formatierung haben damit Sie auf einer Website der spanischen Polizei richtig eingelesen werden können. Es sind Meldelisten von unseren Hotelgästen. Da unser Programm in Deutsch ist und die Spanier aber gerne alles in Spanisch haben möchten habe ich eine batch Datei mit einem VB Script was die deutschen Ländernamen durch spanische ersetzt.
Die formatierten Zeilen in der Datei sehen wie folgt aus:
C5204661|I|20101214|STUDER |
10CF31776|I|20100720|STUDER |
712002310|I|20100916|KALLYAKIN |
F0826056|I|20040309|GAECHTER |
NY6065R14|I|20110401|SONKE |
XF623864-Q|I|20091101|RODRIGUEZ |
Nur zur Nachvollziehbarkeit:
Jetzt haben wir das Problem dass unser Programm für den Export nur die Ausweistypen "P" und "I" kennt, das ist bei fast allen Ländern auch in Ordnung, bis auf SPANIEN.
Die Spanier müssen als Ausweistyp ein "D" dort stehen haben, sprich aus:
XF623864-Q|I|20091101|RODRIGUEZ |
XF623864-Q|D|20091101|RODRIGUEZ |
Ist es möglich eine Abfrage da rein zu basteln die abfragt wenn in einer Zeile |ESPAÑA| steht, in der gleichen Zeile das |I| durch |D| ersetzt werden soll?!
Hier mein bereits vorhandenes Script:
@echo off & setlocal
set "Datei=Z:\Jandarma\18685AAH01.036"
set R=%temp%\Replace5.vbs
%R% echo F = WScript.Arguments(0)
%R% echo Set fso = CreateObject("Scripting.FileSystemObject")
%R% echo T = fso.OpenTextFile(F).ReadAll
%R% echo T = fso.OpenTextFile(F).ReadAll
%R% echo T = Replace(T, "AEGYPTEN", "EGIPTO")
%R% echo T = Replace(T, "DAENEMARK", "DINAMARCA")
%R% echo T = Replace(T, "DEUTSCHLAND", "ALEMANIA")
%R% echo T = Replace(T, "ALGERIEN", "ARGELIA")
%R% echo T = Replace(T, "ARMENIEN", "ARMENIA")
%R% echo T = Replace(T, "ASERBAIDSCHAN", "AZERBAIYÁN")
%R% echo T = Replace(T, "BELGIEN", "BÉLGICA")
%R% echo T = Replace(T, "BRASILIEN", "BRASIL")
%R% echo T = Replace(T, "BULGARIEN", "BULGARIA")
%R% echo T = Replace(T, "DAENEMARK", "DINAMARCA")
%R% echo T = Replace(T, "DEUTSCHLAND", "ALEMANIA")
%R% echo T = Replace(T, "ALGERIEN", "ARGELIA")
%R% echo T = Replace(T, "ARMENIEN", "ARMENIA")
%R% echo T = Replace(T, "ASERBAIDSCHAN", "AZERBAIYÁN")
%R% echo T = Replace(T, "BELGIEN", "BÉLGICA")
%R% echo T = Replace(T, "BRASILIEN", "BRASIL")
%R% echo T = Replace(T, "BULGARIEN", "BULGARIA")
%R% echo fso.CreateTextFile(F).Write T
Hoffe mir kann jemand helfen.
Vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 188709
Url: https://administrator.de/contentid/188709
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo chrishh!
Da Du eine zeilenweise Betrachtung benötigst, musst Du den Dateiinhalt nochmals
Grüße
bastla
Da Du eine zeilenweise Betrachtung benötigst, musst Du den Dateiinhalt nochmals
split
ten - etwa (als Ersatz der Zeilen 74 - 76):>>%R% echo Z = Split(T, vbCrLf)
>>%R% echo For i = 0 To UBound(Z)
>>%R% echo If InStr(Z(i), "|ESPAÑA|") ^> 0 Then Z(i) = Replace(Z(i), "|I|", "|D|")
>>%R% echo Next
>>%R% echo fso.CreateTextFile(F).Write Join(Z, vbCrLf)
bastla
Hallo chrishh!
Mach aus der Zeile 3
Ganz nebenbei: Wieso packst Du das in einen Batch? Wenn nicht mehr als diese Umwandlung gefragt ist, könntest Du ja direkt ein VBS verwenden ...
Grüße
bastla
Mach aus der Zeile 3
>>%R% echo If InStr(Z(i), "|ESPAÑA|") ^> 0 Then
>>%R% echo Z(i) = Replace(Z(i), "|I|", "|D|")
>>%R% echo Z(i) = Replace(Z(i), "2||", "2|")
>>%R% echo End If
Grüße
bastla