Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Suchen und Ersetzen in .bat Datei mit Bedingung

Mitglied: chrishh

chrishh (Level 1) - Jetzt verbinden

27.07.2012 um 10:44 Uhr, 3166 Aufrufe, 6 Kommentare

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:

2||C5204661|I|20101214|STUDER||WERNER|M|19600704|FRANCIA|20120724|
2||10CF31776|I|20100720|STUDER||MAZZARINE|F|19980101|FRANCIA|20120724|
2||712002310|I|20100916|KALLYAKIN|| ALEXEY|M|19610614|RUSIA|20120724|
2||F0826056|I|20040309|GAECHTER||JASMIN|F|19731116|SUIZA|20120724|
2||NY6065R14|I|20110401|SONKE||ESTHER|F|19700510|PAÍSES BAJOS|20120724|
2||XF623864-Q|I|20091101|RODRIGUEZ||MANOLO|M|19730522|ESPAÑA|20120724|

Nur zur Nachvollziehbarkeit:
2||Ausweisnummer|Ausweisart|Austellungsdatum|Nachname|2.Nachname|Vorname|Geschlecht|Geburtsdatum|Geburtsland|Anreisedatum|

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:
2||XF623864-Q|I|20091101|RODRIGUEZ||MANOLO|M|19730522|ESPAÑA|20120724|
müsste
2||XF623864-Q|D|20091101|RODRIGUEZ||MANOLO|M|19730522|ESPAÑA|20120724|
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

>%R% echo F = WScript.Arguments(0)
>>%R% echo Set fso = CreateObject("Scripting.FileSystemObject")
>>%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 fso.CreateTextFile(F).Write T
for %%f in ("%Datei%") do cscript //nologo %R% "%%f"



Hoffe mir kann jemand helfen.

Vielen Dank
Mitglied: ColdZero89
27.07.2012, aktualisiert um 11:04 Uhr
Moin,

soweit ich richtig verstanden habe, sobald da - bei deinen Beispielen Manolo - ESPANA steht, soll egal welcher Buchstabe durch D ersetzt werden?

Btw Setz das ganze mal in ein CODE mit < code > und am ende < /code > (nur ohne Leerzeichen), dann ist das übersichtlicher.

Gruß Zero
Bitte warten ..
Mitglied: chrishh
27.07.2012 um 11:06 Uhr
Hallo auch und vielen Dank für die schnelle Antwort.

Nicht jeder Buchstabe soll durch D ersetzt werden, es soll nur der Ausweistyp von |I| oder |P| (je nachdem welcher in der Zeile eingetragen ist) durch |D| ersetzt werden. Aber das halt nur in der Zeile wo |ESPANA| als Land steht.

Hier noch mal die ganze Datei, die bis jetzt nur die Ländernamen in Spanisch ändert:

01.
 
02.
@echo off & setlocal  
03.
set "Datei=Z:\Jandarma\18685AAH01.036" 
04.
 
05.
set R=%temp%\Replace5.vbs  
06.
 
07.
>%R%  echo F = WScript.Arguments(0) 
08.
>>%R% echo Set fso = CreateObject("Scripting.FileSystemObject") 
09.
>>%R% echo T = fso.OpenTextFile(F).ReadAll 
10.
 
11.
>>%R% echo T = Replace(T, "AEGYPTEN", "EGIPTO")  
12.
>>%R% echo T = Replace(T, "DAENEMARK", "DINAMARCA") 
13.
>>%R% echo T = Replace(T, "DEUTSCHLAND", "ALEMANIA") 
14.
>>%R% echo T = Replace(T, "ALGERIEN", "ARGELIA")  
15.
>>%R% echo T = Replace(T, "ARMENIEN", "ARMENIA")  
16.
>>%R% echo T = Replace(T, "ASERBAIDSCHAN", "AZERBAIYÁN")  
17.
>>%R% echo T = Replace(T, "BELGIEN", "BÉLGICA")  
18.
>>%R% echo T = Replace(T, "BRASILIEN", "BRASIL") 
19.
>>%R% echo T = Replace(T, "BULGARIEN", "BULGARIA") 
20.
>>%R% echo T = Replace(T, "ELFENBEINKÜSTE", "COSTA DE MARFIL") 
21.
>>%R% echo T = Replace(T, "ESTLAND", "ESTONIA") 
22.
>>%R% echo T = Replace(T, "FINNLAND", "FINLANDIA") 
23.
>>%R% echo T = Replace(T, "FRANKREICH", "FRANCIA") 
24.
>>%R% echo T = Replace(T, "GEORGIEN", "GEORGIA") 
25.
>>%R% echo T = Replace(T, "GRIECHENLAND", "GRECIA") 
26.
>>%R% echo T = Replace(T, "GROSSBRITANNIEN", "REINO UNIDO") 
27.
>>%R% echo T = Replace(T, "IRLAND", "IRLANDA") 
28.
>>%R% echo T = Replace(T, "ISLAND", "ISLANDIA") 
29.
>>%R% echo T = Replace(T, "ITALIEN", "ITALIA") 
30.
>>%R% echo T = Replace(T, "JAPAN", "JAPÓN") 
31.
>>%R% echo T = Replace(T, "KAMBODSCHA", "CAMBODIA") 
32.
>>%R% echo T = Replace(T, "KANADA", "CANADÁ") 
33.
>>%R% echo T = Replace(T, "KASACHSTAN", "KAZAJSTÁN") 
34.
>>%R% echo T = Replace(T, "KOLUMBIEN", "COLOMBIA") 
35.
>>%R% echo T = Replace(T, "KROATIEN", "CROACIA") 
36.
>>%R% echo T = Replace(T, "LETTLAND", "LETONIA") 
37.
>>%R% echo T = Replace(T, "LIBANON", "LIBANO") 
38.
>>%R% echo T = Replace(T, "LITAUEN", "LITUANIA") 
39.
>>%R% echo T = Replace(T, "LUXEMBURG", "LUXEMBURGO") 
40.
>>%R% echo T = Replace(T, "MALAYSIA", "MALASIA") 
41.
>>%R% echo T = Replace(T, "MALEDIVEN", "MALDIVAS") 
42.
>>%R% echo T = Replace(T, "MAROKKO", "MARRUECOS") 
43.
>>%R% echo T = Replace(T, "MAURITIUS", "MAURÍTANIA") 
44.
>>%R% echo T = Replace(T, "NEUSEELAND", "NUEVA ZELANDIA") 
45.
>>%R% echo T = Replace(T, "NIEDERLANDE", "PAÍSES BAJOS") 
46.
>>%R% echo T = Replace(T, "NORDKOREA", "COREA DEL NORTE") 
47.
>>%R% echo T = Replace(T, "NORWEGEN", "NORUEGA") 
48.
>>%R% echo T = Replace(T, "OESTERREICH", "AUSTRIA") 
49.
>>%R% echo T = Replace(T, "PHILIPPINEN", "FILIPINAS") 
50.
>>%R% echo T = Replace(T, "POLEN", "POLONIA") 
51.
>>%R% echo T = Replace(T, "RUMAENIEN", "RUMANIA") 
52.
>>%R% echo T = Replace(T, "RUSSLAND", "RUSIA") 
53.
>>%R% echo T = Replace(T, "SCHOTTLAND", "ESCOCIA") 
54.
>>%R% echo T = Replace(T, "SCHWEDEN", "SUECIA") 
55.
>>%R% echo T = Replace(T, "SCHWEIZ", "SUIZA") 
56.
>>%R% echo T = Replace(T, "SLOWAKEI", "ESLOVAQUIA") 
57.
>>%R% echo T = Replace(T, "SLOWENIEN", "ESLOVENIA") 
58.
>>%R% echo T = Replace(T, "SPANIEN", "ESPANA") 
59.
>>%R% echo T = Replace(T, "SUEDAFRIKA", "SUDÁFRICA") 
60.
>>%R% echo T = Replace(T, "SUEDKOREA", "COREA DEL SUR") 
61.
>>%R% echo T = Replace(T, "TAIWAN", "TAIWÁN") 
62.
>>%R% echo T = Replace(T, "THAILAND", "TAILANDIA") 
63.
>>%R% echo T = Replace(T, "TSCHECHIEN", "REPÚBLICA CHECA") 
64.
>>%R% echo T = Replace(T, "TSCHECHISCHE REPUBLIK", "REPÚBLICA CHECA") 
65.
>>%R% echo T = Replace(T, "TUNESIEN", "TÚNEZ") 
66.
>>%R% echo T = Replace(T, "TUERKEI", "TURQUÍA") 
67.
>>%R% echo T = Replace(T, "UKRAINE", "UCRANIA") 
68.
>>%R% echo T = Replace(T, "UNGARN", "HUNGRÍA") 
69.
>>%R% echo T = Replace(T, "VATIKAN STADT", "CIUDAD DEL VATICANO") 
70.
>>%R% echo T = Replace(T, "VEREINIGTE STAATEN VON AMERIKA", "ESTADOS UNIDOS") 
71.
>>%R% echo T = Replace(T, "WALES", "GALES") 
72.
>>%R% echo T = Replace(T, "WEISSRUSSLAND", "BELARÚS") 
73.
>>%R% echo T = Replace(T, "ZYPERN", "CHIPRE") 
74.
 
75.
 
76.
>>%R% echo fso.CreateTextFile(F).Write T 
77.
for %%f in ("%Datei%") do cscript //nologo %R% "%%f" 
78.
 
Bitte warten ..
Mitglied: bastla
27.07.2012, aktualisiert um 15:07 Uhr
Hallo chrishh!

Da Du eine zeilenweise Betrachtung benötigst, musst Du den Dateiinhalt nochmals splitten - etwa (als Ersatz der Zeilen 74 - 76):
01.
>>%R% echo Z = Split(T, vbCrLf) 
02.
>>%R% echo For i = 0 To UBound(Z) 
03.
>>%R% echo     If InStr(Z(i), "|ESPAÑA|") ^> 0 Then Z(i) = Replace(Z(i), "|I|", "|D|") 
04.
>>%R% echo Next 
05.
>>%R% echo fso.CreateTextFile(F).Write Join(Z, vbCrLf)
Grüße
bastla
Bitte warten ..
Mitglied: chrishh
27.07.2012 um 15:00 Uhr
Hallo bastla,

funktioniert genau wie gewünscht.

Ich danke Dir vielmals dafür!

Gruß,
Christian
Bitte warten ..
Mitglied: chrishh
27.07.2012 um 15:57 Uhr
Hola noch mal,

Kannst Du mir noch sagen wie ich einen zweiten String auf die gleiche Weise durch einen anderen ersetzen kann?

Wenn ich versuche da noch eine zweite if Abfrage mit einem anderen String ("2||" soll ersetzt werden durch "2|") reinsetze macht das Skript gar nichts mehr. Es soll sich auch wieder nur auf die Spanier beziehen, also genau so wie du im Code oben geschrieben hast nur dass 2|| durch 2| ersetzt werden soll.

Vielen Dank im Voraus
Bitte warten ..
Mitglied: bastla
27.07.2012, aktualisiert um 17:15 Uhr
Hallo chrishh!

Mach aus der Zeile 3
01.
>>%R% echo     If InStr(Z(i), "|ESPAÑA|") ^> 0 Then 
02.
>>%R% echo         Z(i) = Replace(Z(i), "|I|", "|D|") 
03.
>>%R% echo         Z(i) = Replace(Z(i), "2||", "2|") 
04.
>>%R% echo     End If
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
Bitte warten ..
Ähnliche Inhalte
Windows Tools

Suche Programm zum dateien suchen und Ersetzen mit Wildcat Suche

gelöst Frage von sfera-haizaWindows Tools5 Kommentare

Grüßt euch, ich nutze zzT. das Programm InfoRapid Suchen & Ersetzen um HTML / PHP Dateien zu durchsuchen bzw. ...

Batch & Shell

Wert in Datei Suchen und if else Bedingung

Frage von trallerBatch & Shell4 Kommentare

Hallo, ich möchte ein kleines Bash-Script erstellen, welches prüft, ob ein bestimmter Text, welcher die Variable $suchtext ist, in ...

Microsoft

Suchen und kopieren einer Datei mit cmd bzw .bat

Frage von JQuaderMicrosoft1 Kommentar

Hallo zusammen, ich versuche eine Datei auf meiner Festplatte zu finden und danach woandershin zu kopieren. Da das Benutzen ...

Microsoft Office

Excel - suchen und ersetzen für mehrere Formeln in verschiedenen Dateien

Frage von kilrathiMicrosoft Office

Hallo zusammen, ich weiß es gibt schon einige Fragen zu "suchen und ersetzen" in Excel, aber irgendwie passt Keine ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 1 TagWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 1 TagAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 2 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Hyper-V
Hyper-V mit altem XEON-Server. Was ist falsch?
Frage von LollipopHyper-V11 Kommentare

Hallo Bin etwas frustriert. Kleinbetrieb, ca. 15 PC's, 2 Stk. Server mit einigen virtuellen PC's für Fernwartung, VaultServer für ...

Windows Server
NTFS Berechtigungen Ordnerstruktur
Frage von hukahu23489Windows Server11 Kommentare

Hallo, ich bin seit kurzem in einer neuen IT-Abteilung und bin über das Berechtigungskonzept des Unternehmens sehr schockiert. Ich ...