tigerbaby
Goto Top

Textstellen in mehreren Dateien mit batch editieren

Hallo!

Ich weiss das Thema wurde schon mehrmals hier erwähnt.
Aber ich ein Laie was batch-skripting angeht und werde aus den meisten Antworten hier nicht schlau.
Vielleicht kann mir ja trozdem wer helfen!

WinXP
Mein Problem:

Ich habe 230 Ordner mit jeweils einer txt-Datei drin. (das sind preislisten)
In diesen txt-Dateien sind fehlerhafte Einträge die ich ändern muss.

Ich brauche ein Skript, daß alle Dateien ausliest ob der Eintrag " Inhalt" drinnen ist, und wenn ja dann in "xxx Inhalt" ändert.

Es geht mir primär um die 4 Leerzeichen vor "Inhalt". Diese 4 Leerzeichen muss ich mit "xxx " ersetzen.

Hilfe bitte!!!

Content-Key: 95132

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

Printed on: May 23, 2024 at 19:05 o'clock

Member: TheJoker2305
TheJoker2305 Aug 22, 2008 at 16:00:49 (UTC)
Goto Top
Hi,
es hört sich jetzt zwar blöd an, aber ich habe so ein Problem mal mit Excel + VBA gelöst.


Kommt das Wort "Inhalt" in den Preislisten öfter (als ein Mal) vor ?

Setze mich da mal ran, wenn ich nachher @home bin, habe die datei irgendwo noch liegen...

Viele Grüße
TheJoker2305
Member: RiffRaff
RiffRaff Aug 22, 2008 at 23:15:30 (UTC)
Goto Top
Schau doch mal hier:

Batch - Leerzeilen beim auslesen mit for Schleife mitnehmen?

das ist doch bestimmt gut anpassbar, oder?
Member: bastla
bastla Aug 25, 2008 at 22:20:47 (UTC)
Goto Top
Hallo ThomasBerger!

Versuch's mal damit:
@echo off & setlocal
set "Basis=D:\Dein Ordner"  
set "Von=    Inhalt"  
set "Nach=xxx Inhalt"  

set R=%temp%\ReplaceInFile.vbs
>%R% echo Set fso=CreateObject("Scripting.FileSystemObject"):Set a=WScript.Arguments:T=fso.OpenTextFile(a(0)).ReadAll:If InStr(1,T,a(1),1)^>0 Then fso.CreateTextFile(a(0)).Write Replace(T,a(1),a(2),1,-1,1)  

for /d %%i in ("%Basis%\*.*") do (  
    echo %%i
    for %%t in ("%%i\*.txt") do (  
        cscript //nologo %R% "%%t" "%Von%" "%Nach%"  
    )
)
Da Du den Namen der Textdatei nicht genannt hast, versucht der Batch, in sämtlichen in den Unterordnern von %Basis% gefundenen .txt-Dateien jedes Vorkommen von %Von% durch %Nach% zu ersetzen. Sollte der Name der Textdatei in jedem Ordner gleich sein, kannst Du diesen anstelle von "*.txt" in der Zeile 11 angeben.

Da "in der Datei" ersetzt wird (ohne Sicherungskopie), solltest Du zum Testen vielleicht nur einige Deiner 230 Ordner (bzw Kopien davon) verwenden face-wink.

Grüße
bastla