fitzodil
Goto Top

Zeichen in einer txt datei finden und ändern

Hallo,

ich möchte gern ein Batch file, was folgendes realisert.

Eine Datei xxx.txt soll eingelesen werden.

Anschliesend soll in dieser xxx.txt datei nach einer Zeichenfolge "50000" gesucht werden und immer wenn diese Zeichenfolge
gefunden wird, soll dieser mit einem Zähler innerhalb der Batch Datei hochgezählt werden.

Beispiel:
xxx.txt
hdsjlfhjdfjds50000dlkfhkdlsjflkd50000
jkfhgkjfdhg50000zdf


Batch Datei läuft und Zähler ist bei 50001

Ergebnis:
hdsjlfhjdfjds50001dlkfhkdlsjflkd50001
jkfhgkjfdhg50001zdf

Gibt es die Möglichkeit, sowas zu realisieren ohne über temporäre Dateien oder neue Dateien zu gehen?
Es muss die vorhandene Datei überschrieben und entsprechend angepasst werden.


Vielen Dank und viele Grüße
Andreas

Content-Key: 94945

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

Printed on: April 24, 2024 at 00:04 o'clock

Member: bastla
bastla Aug 21, 2008 at 09:13:12 (UTC)
Goto Top
Hallo fitzodil und willkommen im Forum!

Gibt es die Möglichkeit, sowas zu realisieren ohne über temporäre Dateien oder neue Dateien zu gehen?
Weshalb willst Du eigentlich Temporärdateien vermeiden? Mit native Batch ist das IMHO nicht möglich - dazu bräuchte es einen Hexeditor mit Kommandozeilensteuerung oder zumindest ein VBScript.

Abgesehen davon finde ich Dein Beispiel widersprüchlich: Nach Deiner Beschreibung (die sich ja nur auf eine einzelne Datei bezieht) hätte ich eigentlich als Ergebnis
hdsjlfhjdfjds50001dlkfhkdlsjflkd50002
jkfhgkjfdhg50003zdf
erwartet. Dass jeweils der selbe Wert (50001) eingetragen wird, wäre aus meiner Sicht nur sinnvoll, wenn durch diesen Batch mehrere Textdateien zu bearbeiten wären.

Grüße
bastla
Member: fitzodil
fitzodil Aug 21, 2008 at 11:42:38 (UTC)
Goto Top
Temporäre Dateien will ich vermeiden, da die vorhandene Datei ein besonderes Format hat, was nicht angegriffen werden soll. Daher am besten direkt in die Datei schreiben.

Die 50000 kommt mehrere male in der Textdatei vor und ist über mehrere Zeilen verteilt.
(Siehe Beispiel oben)

Es muss realisert werden, dass genau in dieser Datei alle Stellen wo 50000 vorkommt mit 50001 ersetzt wird.

Ist das möglich?
Member: bastla
bastla Aug 21, 2008 at 19:58:43 (UTC)
Goto Top
Hallo fitzodil!

Die Technik wird Dir vielleicht bekannt vorkommen face-wink:
@echo off & setlocal
set "Datei=D:\Deine Textdatei.txt"  
set "Von=50000"  
set "Nach=50001"  

set R=%temp%ReplaceInFile.vbs
>%R% echo Set fso=CreateObject("Scripting.FileSystemObject"):Set a=WScript.Arguments:T=fso.OpenTextFile(a(0)).ReadAll:fso.CreateTextFile(a(0)).Write Replace(T,a(1),a(2))  
cscript //nologo %R% "%Datei%" "%Von%" "%Nach%"  
Grüße
bastla
Member: fitzodil
fitzodil Aug 22, 2008 at 05:28:32 (UTC)
Goto Top
Super!. Vielen Dank für die schnelle Hilfe. Ein großes LOb an dieses Forum und vor Allem an bastla.

Danke.