Datei per batch verändern


FrankBooth

Erfahrenes Mitglied
Hallo zusammen,

ich möchte Dateiinhalte per Batchskript manipulieren. Ich suche im aktuellen Verzeichnis nach Dateien mit der Endung .ini. Die Datei soll zeilenweise kontrolliert werden ob eine bestimmte Zeichenfolge vorkommt, wenn ja soll diese Zeichenfolge veränder werden und in die Datei zurückgeschrieben werden. Geht das mit einer Datei oder muss ich zwingent zwei Dateien nehmen und am Ende ggf. wieder umbenennen? Hier schon mal der Ansatz:

PHP:
@echo on
SETLOCAL enabledelayedexpansion

SET "suchen_nach1=../"
SET "ersetzen_durch1=./../../"

for /F %%i in ('dir /B *.ini') do (

   for /F "tokens=2" %%j in (%%i) do (     
      echo %%j
      SET j=!j:%suchen_nach1%=%ersetzen_durch1%! 
      echo %%j
      ECHO !j!>>%%i%
   )
)

Dateien werden gefunden, die entsprechenden Teile der Zeilen werden einzeln eingelensen, danach läuft es aber nicht mehr wie ich das gerne hätte!

Danke schon mal für Eure Hilfe!
 

Bratkartoffel

gebratene Kartoffel
Premium-User
Hi,

ich hatte mal ein ähnliches Vorhaben und habe das dann durch ein kleines Linux-Tool (auch für Windows) relativ simpel in ein paar Zeilen geschafft:

Zuerst habe ich Path umgebogen, so dass er die Linux Programme auch hernimmt. Dann habe ich mir zwei Variablen angelegt, einmal mit dem zu suchenden (FROM) Ausdruck und einmal den Ausdruck, den er einfügen soll (TO). Anschließend habe ich den sed aufgerufen, der mir die Datei geändert hat:

Code:
set Path=c:\cygwin\bin
set FROM=../
set TO=./../../

sed -i -e s#%FROM%#%TO%#g

Grüße,
BK
 

Forum-Statistiken

Themen
272.355
Beiträge
1.558.613
Mitglieder
187.829
Neuestes Mitglied
AlDi31