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-Key: 113098

Url: https://administrator.de/contentid/113098

Printed on: April 23, 2024 at 10:04 o'clock

Member: docsam
docsam Apr 02, 2009 at 13:46:32 (UTC)
Goto Top
also ich glaube so Unix-Tools wie grep und awk gibts auch für Windows, das wäre jetzt mein Ansatz -
Member: Wolfsrudel
Wolfsrudel Apr 02, 2009 at 13:52:22 (UTC)
Goto Top
Wohl eher "sed" ;)
Member: docsam
docsam Apr 02, 2009 at 13:54:30 (UTC)
Goto Top
ja,stimmt den hab ich vergessen.
Member: vivekc
vivekc Apr 02, 2009 at 13:57:21 (UTC)
Goto Top
ist sed nicht für UNIX? Brauch was für Windows
Member: docsam
docsam Apr 02, 2009 at 13:59:37 (UTC)
Goto Top
doch, aber wie Ich schrieb gibts die Tools bestimmt auch für Windows
http://lmgtfy.com/?q=sed+f%C3%BCr+windows
Member: bastla
bastla Apr 02, 2009 at 15:16:33 (UTC)
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
Member: vivekc
vivekc Apr 02, 2009 at 15:52:41 (UTC)
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
Member: bastla
bastla Apr 02, 2009 at 16:36:17 (UTC)
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 ...