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
Wenn zum Beispiel "hans mustermann" aus der Zeile entfernt werden soll, muß die letzte Zeile des
in
geändert werden.
Hier nun das vollständige Programm:
Viel Spass beim Testen!
Herzliche Grüße
batti-batch
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-BlocksSET "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

