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

Frage Entwicklung Batch & Shell

Mitglied: chrishh

chrishh (Level 1) - Jetzt verbinden

27.07.2012 um 10:44 Uhr, 3158 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
Batch & Shell
Suchen und ersetzen in einer bat - Problem wie maskiere ich istGleich
gelöst Frage von MrNiceNetBatch & Shell2 Kommentare

Hallo, wie markiere ich beim suchen und ersetzen das =. Habe schon "" % und ^ probiert, leider hilfts ...

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 ...

Neue Wissensbeiträge
MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 11 StundenMikroTik RouterOS4 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 11 StundenSicherheit

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Information von admtech vor 14 StundenAdministrator.de Feedback9 Kommentare

Hallo Administrator User, mit dem Release 5.7 haben wir unsere Startseite überarbeitet und die Beiträge und Fragen voneinander getrennt. ...

Vmware

VMware Desktopprodukte sind verwundbar

Information von Penny.Cilin vor 19 StundenVmware

Die VMware-Anwendungen zum Umgang mit virtuellen Maschinen Fusion, Horizon Client und Workstation sowie die Plattform NSX sind verwundbar. Davon ...

Heiß diskutierte Inhalte
Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail
Frage von ahstaxVisual Studio24 Kommentare

Hallo, ich möchte gerne ein vb.net-Tool schreiben, das am Ende eine Outlook-E-Mail erzeugt. Grundsätzlich ist mir klar, wie das ...

Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server16 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows Netzwerk
Netzwerk Neustrukturierung
Frage von IT-DreamerWindows Netzwerk16 Kommentare

Hallo verehrte Community und Admins, bei uns im Haus steht eine Neustrukturierung an. Dafür benötige ich von euch ein ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...