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
GELÖST

Batch Datei zum Suchen und Ersetzen in einer Textdatei die ein ! enthält

Frage Entwicklung Batch & Shell

Mitglied: bodor21

bodor21 (Level 1) - Jetzt verbinden

18.06.2009, aktualisiert 14:19 Uhr, 10452 Aufrufe, 9 Kommentare

Hallo,

ist mal wieder eine Frage zu Suche und ersetzten. Einige Beispiele aus älteren Beiträgen funktionieren, nur das ! (Ausrufezeichen) verschwindet in der ausgegebenen Datei.

In der Datei Test.txt sind mehrere Zeilen , die so aussehen:

.
.
:Polizei=NOTRUF110,Region=1340,NR=22273,Breite=E341CC0!
:Polizei=NOTRUF110,Region=1540,NR=27873,Breite=E362CC0!

Mit der folgenden Batch funktioniert es, nur das ! (Ausrufezeichen) wird in der ausgegebenen Datei gelöscht.
Das ! (Ausrufezeichen) soll ausserdem noch in ein ; (Semikolon) ersetzt werden, wie geht das.


01.
@echo off & setlocal enabledelayedexpansion 
02.
set "Datei=D:\Test.txt"  
03.
set "Von=:Polizei" 
04.
set "Nach=Waehle:Polizei" 
05.
set "t=%temp%\text.tmp"  
06.
if exist "%t%" del "%t%"  
07.
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & set Line=!Line:%Von%=%Nach%! & echo !Line!>>"%t%"  
08.
move /y "%t%" "%Datei%"

Das Ergebnis sollte so aussehen:

Waehle:Polizei=NOTRUF110,Region=1340,NR=22273,Breite=E341CC0;
Waehle:Polizei=NOTRUF110,Region=1540,NR=27873,Breite=E362CC0;

Danke für die Hilfe eines Anfängers

MfG

bodor
Mitglied: LAMPE1962
18.06.2009 um 16:26 Uhr
Hallo Bodor, mach Dir nicht das Leben schwer mit Batch. Gehe auf http://www.inforapid.de/ , lade Dir "Suchen&Ersetzten runter, und los gehts.

Gruß
Stefan
Bitte warten ..
Mitglied: bodor21
18.06.2009 um 16:35 Uhr
Hallo Stefan,

leider muss ich das in eine andere Batch Datei einbinden , kann das og. Programm also nicht installieren.


Danke für die schnelle Antwort

MfG

bodor
Bitte warten ..
Mitglied: bastla
18.06.2009 um 16:55 Uhr
Hallo bodor21 und willkommen im Forum!

Sollte so gehen:
01.
@echo off & setlocal 
02.
set "Datei=D:\Test.txt"  
03.
set "Von=:Polizei" 
04.
set "Nach=Waehle:Polizei" 
05.
 
06.
set "t=%temp%\text.tmp"  
07.
if exist "%t%" del "%t%"  
08.
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & call :ProcessLine 
09.
move "%t%" "%Datei%" 
10.
goto :eof 
11.
 
12.
:ProcessLine 
13.
call set "Line=%%Line:%Von%=%Nach%%%" 
14.
 
15.
::Ersetzung "!" durch ";" 
16.
set "Line=%Line:!=;%" 
17.
 
18.
>>"%t%" echo %Line% 
19.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Biber
18.06.2009 um 17:14 Uhr
Moin bodor21,

willkommen im Forum.
Wenn eine Lösung des eigentlichen Problems gefragt ist (Strings mit enthaltenenem "!" sind ein bisschen zickig in Verbindung mit DelayedExpansion), dann wäre die Antwort:
  • Benutze "DelayedExpansion" nur "local", da, wo es auch benötigt wird.

01.
@echo off & setlocal disabledelayedexpansion 
02.
set "Datei=D:\Test.txt" set "Von=:Polizei" 
03.
set "Nach=Waehle:Polizei" 
04.
:: set "t=%temp%\text.tmp"  
05.
set "t=con:" 
06.
if exist "%t%" del "%t%"  
07.
for /f "usebackq delims=" %%i in ("%Datei%") do set "line=%%i" & call :ProcessLine 
08.
goto :eof 
09.
 
10.
:ProcessLine -- keine Parameter -- 
11.
   :: solange keine DelayedExpansion gesetzt: Ausrufezeichen ersetzen 
12.
   Set "Line=%Line:!=;%" 
13.
   setlocal Enabledelayedexpansion 
14.
   set Line=!Line:%Von%=%Nach%!  
15.
   echo %Line%>>"%t%"  
16.
   echo [auf echo gesetzt] move /y "%t%" "%Datei%" 
17.
   Endlocal 
18.
goto :eof
Grüße
Biber
Bitte warten ..
Mitglied: bodor21
18.06.2009 um 22:01 Uhr
Hallo Biber,

ist genau das was ich brauche --> DANKE

Eine Frage habe ich aber doch noch

Wie kann ich jede Zeile in meiner Test.txt ab einen bestimmten Wort bis zum Zeilenende löschen.
Das Wort heist: ,Breite
Die Zeilen in der Test.txt sind nicht gleichlang.

Vorher
:Polizei=NOTRUF110,Region=1540,NR=27873,Breite=E362CC0!
:Polizei=NOTRUF110,Region=1540,NR=27874553,Breite=E362C78C0!

nachher

:Polizei=NOTRUF110,Region=1540,NR=27873
:Polizei=NOTRUF110,Region=1540,NR=27874553

MfG

bodor
Bitte warten ..
Mitglied: bastla
18.06.2009 um 22:09 Uhr
Hallo bodor21!

Falls Du auch eine Anwort von mir akzeptierst, dann (ungetestet und unter der Voraussetzung, dass die Datensätze in jeder Zeile den gleichen Aufbau und Kommata als Trennzeichen haben):
01.
@echo off & setlocal 
02.
set "Datei=D:\Test.txt"  
03.
 
04.
set "t=%temp%\text.tmp"  
05.
if exist "%t%" del "%t%"  
06.
for /f "usebackq tokens=1-3 delims=," %%i in ("%Datei%") do >>"%t%" echo %%i,%%j,%%k 
07.
move "%t%" "%Datei%"
Grüße
bastla
Bitte warten ..
Mitglied: Biber
18.06.2009 um 22:19 Uhr
Moin bodor21,

ich würde an Deiner Stelle die Strategie überdenken und nicht mehr zeilenweise denken sonder eher feldweise.

Es scheint ja nur eine endliche Anzahl von "Feldern" in einer Zeile vorkommen zu können, wenn wir als Feldtrenner ein "," annehmen.
[ja, dass die Zeile mit ":" beginnt und mit "!" endet, habe ich wahrgenommen].

Dennoch bleiben x "Felder" mit dem Muster "whatever=wert" zwischen den Trennern "," übrig.

Beispiel am CMD-Prompt:
01.
>for /f "delims=, tokens=1-4" %i in (":Polizei=NOTRUF110,Region=1540,NR=27873,Breite=E362CC0!") do @echo 1[%i] 2[%j] 3[%k] 4[und nicht: %l] 
02.
1[:Polizei=NOTRUF110] 2[Region=1540] 3[NR=27873] 4[und nicht: Breite=E362CC0!]
Jedes dieser einzelnen "Felder" oder auf bätchisch "Token" %i, %j %k..... kannst Du wiederum in zwei Token "whatever" und "wert" zerlegen,
wenn Du in einer zweiten Runde als "Delims==" und "token=1,2" angibst.

Dann kannst Du auch prüfen, ob dieses whatever-token gleich "Breite" heißt und damit umgehen.

Grüße
Biber

[Edit] @bastla
wenn Du auch eine Antwort von mir akzeptierst..
Ich würde keine Antworten von Rechtsüberholern akzeptieren ...
[/Edit]
Bitte warten ..
Mitglied: bodor21
18.06.2009 um 23:02 Uhr
Hallo Ihr Antworter,

natürlich akzeptiere ich Antworten von Jeden, der mir helfen möchte )

Die Datei enthält glücklicherweise nur Datensätze mit "," als Texttrenner und es gibt Zeilen mit 2 unterschiedlichen Feldanzahl.
Da brauche ich den CMD-Promt nur 2 mal mit den unterschiedlichen Tokenanzahl durchlaufen lassen.

Werd ich dann morgen mal testen

Danke @all

MfG

bodor21

... wer lesen kann ist klar im Vorteil
Bitte warten ..
Mitglied: bodor21
28.06.2009 um 22:45 Uhr
Hallo

der Test mit den Zeilenende habe ich nicht durchgeführt, da das mir als Unwissender doch etwas kompliziert ist, bzw. ich z.Z. keine Zeit habe mich da reinzuarbeiten.
Ich lösche den Rest mit der Hand, ist bei 60 bis 150 Zeilen n o c h ... zu vertreten.

Das Suchen und ERsetzten ist auf jeden Fall voll funktionsfähig und somit gelöst.

D A N K E

MfG

bodor21
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell - In Textdatei suchen und ersetzen
gelöst Frage von Raaja89Batch & Shell5 Kommentare

Hallo Zusammen, ich habe einen Textdatei mit vielen aufeinander folgendenden Leerzeichen und wo an diversen Stellen Überschriften stehen. Ungefähr ...

Batch & Shell
Suchen - Ersetzen in einer Textdatei - Beschleunigung möglich?
gelöst Frage von Highend01Batch & Shell4 Kommentare

Hi, ich möchte durch eine .bat Datei eine .xml Datei parsen um Ersetzungen vorzunehmen. Ein Beispiel: Die zugehörige Task ...

Batch & Shell
Batch: Dateien innerhalb einer Ordnerstruktur nach einem Sting suchen und ersetzen
Frage von yousaintBatch & Shell2 Kommentare

Hallo zusammen, wie oben erwähnt, würde ich gerne innerhalb einer Ordnerstruktur (Dateien innerhalb aller Unterordner) in den Dateien nach ...

Batch & Shell
Batch Datei - Mehrzeilige Textdatei
gelöst Frage von SchmakusBatch & Shell5 Kommentare

Hallo Zusammen, ich möchte mit einer Batch Datei eine Textdatei erstellen. Ich verwende 2 Variablen (%1, %2). Die Textdatei ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 19 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 23 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 5 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Windows 10
Probleme mit Dateien, deren Pfad + Dateiname länger als 256 Zeichen sind
Frage von FalaffelWindows 109 Kommentare

Guten Tag, unter Windows 10 scheint es immer noch das Problem zu geben, dass der Pfad + Dateiname einer ...