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!!!
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!!!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 95132
Url: https://administrator.de/forum/textstellen-in-mehreren-dateien-mit-batch-editieren-95132.html
Ausgedruckt am: 21.12.2024 um 17:12 Uhr
3 Kommentare
Neuester Kommentar
Schau doch mal hier:
Batch - Leerzeilen beim auslesen mit for Schleife mitnehmen?
das ist doch bestimmt gut anpassbar, oder?
Batch - Leerzeilen beim auslesen mit for Schleife mitnehmen?
das ist doch bestimmt gut anpassbar, oder?
Hallo ThomasBerger!
Versuch's mal damit:
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 .
Grüße
bastla
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 "in der Datei" ersetzt wird (ohne Sicherungskopie), solltest Du zum Testen vielleicht nur einige Deiner 230 Ordner (bzw Kopien davon) verwenden .
Grüße
bastla