vivekc
Goto Top

Erstellen einer Batch datei - ersetzen-löschen von zeichen in einer Textdatei

Ich brauch möchte eine Batchdatei programmieren so das diese Datei eine Textdatei modifiziert.

Hab folgendes Problem:

ich hab viele txt Dateien und muss bestimmte sachen aus dieser Datei ersetzten/Löschen.

Hier ein Beispielzeile:

So sieht die Zeile aus:
U CN=Vivek;Chadha/OU=Extern/OU=Systeme/O=BWILV1:: Vivek;Chadha/Extern/Systeme/BWILV,

so soll Sie dann später aussehen:
U CN=Vivek;Chadha,OU=Extern,OU=Systeme,O=BWILV1:: Vivek;Chadha

Also sollen diese Sachen ersetzt werden:
/OU --> ,OU
/O --> ,O
/Extern/Systeme/BWILV --> ganz weg


Leider kenn ich mich in der Windows- und Programmierwelt nicht so gut aus.


Hoffe Ihr verstehst was ich meine.

Danke im Voraus für deine Hilfe!

Vivek

Content-ID: 113098

Url: https://administrator.de/forum/erstellen-einer-batch-datei-ersetzen-loeschen-von-zeichen-in-einer-textdatei-113098.html

Ausgedruckt am: 16.02.2025 um 17:02 Uhr

docsam
docsam 02.04.2009 um 15:46:32 Uhr
Goto Top
also ich glaube so Unix-Tools wie grep und awk gibts auch für Windows, das wäre jetzt mein Ansatz -
Wolfsrudel
Wolfsrudel 02.04.2009 um 15:52:22 Uhr
Goto Top
Wohl eher "sed" ;)
docsam
docsam 02.04.2009 um 15:54:30 Uhr
Goto Top
ja,stimmt den hab ich vergessen.
vivekc
vivekc 02.04.2009 um 15:57:21 Uhr
Goto Top
ist sed nicht für UNIX? Brauch was für Windows
docsam
docsam 02.04.2009 um 15:59:37 Uhr
Goto Top
doch, aber wie Ich schrieb gibts die Tools bestimmt auch für Windows
http://lmgtfy.com/?q=sed+f%C3%BCr+windows
bastla
bastla 02.04.2009 um 17:16:33 Uhr
Goto Top
Hallo vivekc und willkommen im Forum!

Auch ich kann mich dem Vorschlag, "sed" zu verwenden, durchaus anschließen ...

... aber falls es doch ein Batch (mit etwas VBScript "verfeinert") sein soll, dann etwa so:
@echo off & setlocal
set "Ordner=D:\Ordner mit vielen Textfiles"  
set "Typ=txt"  

set R=%temp%\ReplaceIt.vbs
>%R%  echo F=WScript.Arguments(0):Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile(F).ReadAll  
>>%R% echo fso.CreateTextFile(F,True).Write Replace(Replace(T,"/O",",O"),"/Extern/Systeme/BWILV","")  

for %%i in ("%Ordner%\*.%Typ%") do cscript //nologo %R% "%%i"  
Bitte beim Testen etwas vorsichtig sein (Kopien verwenden), da "in der Datei" (ohne Erstellung einer Sicherungskopie) ersetzt wird.

Für "/OU" nach ",OU" sollte es übrigens genügen, "/O" durch ",O" (da das ja ohnehin benötigt wird) zu ersetzen.

Grüße
bastla
vivekc
vivekc 02.04.2009 um 17:52:41 Uhr
Goto Top
Super hat geklappt. Danke Bastla !!!

Noch eine frage habe ich aber: Wenn ich jetzt mehrer löschen will.

07. >>%R% echo fso.CreateTextFile(F,True).Write Replace(Replace(T,"/O",",O"),"/Extern/Systeme/BWILV","")

sollte das dann so aussehen?

07. >>%R% echo fso.CreateTextFile(F,True).Write Replace(Replace(T,"/O",",O"),"/Extern/Systeme/BWILV","","/Systeme/BWILV","")

ich hab es mal so versucht und dann war die ganze txt datei leer. face-sad
bastla
bastla 02.04.2009 um 18:36:17 Uhr
Goto Top
Hallo vivekc!

Dann wäre ein zusätzliches "Replace" fällig (bzw bei noch mehr Änderungen eine andere Vorgangsweise):
>>%R% echo fso.CreateTextFile(F,True).Write Replace(Replace(Replace(T,"/O",",O"),"/Extern/Systeme/BWILV","")"/Systeme/BWILV","")
Grüße
bastla

P.S.: Darf ich Dich für das Posten von Code auf die entsprechende hinweisen ...