Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

Mit Batch-Datei bestimmet Textstelle ändern





Frage

Ein freundliches Hallo an alle Ich wollte mal nachfragen, ob es mit einer Batchdatei möglich ist nur eine bestimmte Stelle in einem Txtfile zu ändern. Beispiel: Es soll die Zeile [quote]hans mustermann[/quote] abgeändert werden in [quote]clara mustermann[/quote] Die Datei heisst test.txt und liegt im Wurzelverzeichnis von C Besten Dank im vorraus für Eure Bemühungen Mfg Micha

Antwort 1 von Harvey17

würde mich auch interesieren nur eben eine zeile in ner batch ändern :-)

Antwort 2 von batti-batch

Hallo Strauss und Harvey17,


Suchen und Ersetzen in Textdateien ist eine Aufgabe, die sich mit Hilfe der Batch-Programmierung oft einfach erledigen läßt.

Ein solches Problem stand hier neulich schon zur Lösung an (siehe https://supportnet.de/threads/1623749 "Anführungszeichen aus .txt Datei löschen"). Meinen Lösungsvorschlag von damals habe ich noch ein bisschen erweitert.

Dieses Programm eignet sich auch dazu, einzelne Zeichen(folgen) zu suchen und durch andere zu ersetzen oder bestimmte Zeichen(folgen) zu entfernen. Probiert es einfach mal aus. Das Programm kann durch Änderungen im
SET-Block
ganz leicht den Wünschen und Gegebenheiten angepasst werden:

SET "quell_datei=vollstaendiger Dateiname incl. Laufwerk und Pfad"
SET "ziel_datei=vollstaendiger Dateiname incl. Laufwerk und Pfad"
SET "suchen_nach=hans mustermann"
SET "ersetzen_durch=clara mustermann"


Wenn zum Beispiel "hans mustermann" aus der Zeile entfernt werden soll, muß die letzte Zeile des
SET-Blocks


SET "ersetzen_durch=clara mustermann"


in

SET "ersetzen_durch="


geändert werden.

Hier nun das vollständige Programm:

@ECHO off
SETLOCAL enabledelayedexpansion

REM
REM Testprogramm
REM Suchen und Ersetzen in einer Textdatei
REM
REM https://supportnet.de/threads/1481757 
REM batti-batch 11/2007
REM
REM lauffaehig ab Windows 2000
REM 


SET "quell_datei=vollstaendiger Dateiname incl. Laufwerk und Pfad"
SET "ziel_datei=vollstaendiger Dateiname incl. Laufwerk und Pfad"
SET "suchen_nach=hans mustermann"
SET "ersetzen_durch=clara mustermann"

REM Ausgabe einer Fehlermeldung und Programmabbruch
REM falls die Variable "suchen_nach" nicht definiert ist
IF NOT DEFINED suchen_nach (ECHO Fehler: Die Variable suchen_nach nicht definiert^^!&GOTO :eof)

REM Loeschen der Ausgabedatei, falls sie (noch) existiert
IF EXIST %ziel_datei% (DEL /f %ziel_datei% 1>NUL 2>NUL)

REM Quell-Datei zeilenweise auslesen 
REM und in Variable "zeile" schreiben
FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO (
SET zeile=%%i& CALL :ersetzen !zeile!
)
GOTO :weiter
:ersetzen
REM innerhalb der Variable "zeile"
REM den Inhalt der Variable "suchen_nach" suchen
REM und diese durch den Inhalt der Variable "ersetzen_durch" ersetzen
SET zeile=!zeile:%suchen_nach%=%ersetzen_durch%!

REM Inhalt der Variable "zeile" in die Ausgabedatei schreiben
IF [!zeile!] EQU [] (ECHO.>>%ziel_datei%) ELSE (ECHO !zeile!>>%ziel_datei%)
GOTO :eof

:weiter
REM weitere Verarbeitung

ECHO Fertig^^!


Viel Spass beim Testen!

Herzliche Grüße
batti-batch

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: