Inhalt einer .txt-Datei kopieren und dazu 8 Zeilen umbenennen
Hallo,
ich bin absoluter Neuling bei der Batch-Programmierung und hoffe ihr könnt mir helfen
.
Ich möchte folgendes realisieren:
Ich habe eine .txt-Datei (test.txt) welche ungefähr 1,5 MB groß ist und um die 3000 Zeilen hat.
In dieser Datei sind 8 Zeilen die ich umbenennen muss.
Diese 8 Zeilen sind aber nicht immer an der gleichen Position in der Datei. (Mal in Zeile 5-12, mal 8-15 usw.)
In der Ausgangsdatei (test.txt) haben sie immer den gleichen Namen.
In der neuen Datei (neu.txt) ist der Name auch fest definiert.
So sieht z.B. ein Ausschnitt der Text-Datei aus, die ich bearbeitet haben möchte:
Und so soll die Text-Datei nach dem durchlaufen der Batch-Datei aussehen:
Dort wo im oberen Ausschnitt Kabel 630/631 Eingang 1/2 steht muss stattdessen der Code der direkt davor steht nochmal stehen.
IST:
SOLL:
Der gesamte Rest der Datei ist aber auch wichtig und muss komplett mit kopiert werden, so dass die neue Datei genau den gleichen Inhalt darstellt wie die alte, aber mit den 8 geänderten Zeilen.
Ich habe leider noch keinen genauen Ansatz und hoffe ich habe mich verständlich ausgedrückt und dass ihr mir helfen könnt!
Vielen Dank schonmal im Voraus!
ich bin absoluter Neuling bei der Batch-Programmierung und hoffe ihr könnt mir helfen
Ich möchte folgendes realisieren:
Ich habe eine .txt-Datei (test.txt) welche ungefähr 1,5 MB groß ist und um die 3000 Zeilen hat.
In dieser Datei sind 8 Zeilen die ich umbenennen muss.
Diese 8 Zeilen sind aber nicht immer an der gleichen Position in der Datei. (Mal in Zeile 5-12, mal 8-15 usw.)
In der Ausgangsdatei (test.txt) haben sie immer den gleichen Namen.
In der neuen Datei (neu.txt) ist der Name auch fest definiert.
So sieht z.B. ein Ausschnitt der Text-Datei aus, die ich bearbeitet haben möchte:
# DE0000101010100000000000000001101 DE0000101010100000000000000001101 1-1:2.9.1 Standort1
# DE0010101010100000000000011001916 DE0010101010100000000000011001916 1-1:1.9.1 Standort2
# DE0002020202000000000000000000798 Kabel 630, Eingang 1 1-1:3.9.1 Standort3.1
# DE0000202020200000000000000000798 Kabel 630, Eingang 1 1-1:4.9.1 Standort3.2
# DE0003030303000000000000000000798 Kabel 630, Eingang 1 Standort3.3
# DE0000303030300000000000000000798 Kabel 630, Eingang 1 Standort3.4
# DE0004040404000000000000000000799 Kabel 631, Eingang 2 1-1:3.9.1 Standort4.1
# DE0000404040400000000000000000799 Kabel 631, Eingang 2 1-1:4.9.1 Standort4.2
# DE0005050505000000000000000000799 Kabel 631, Eingang 2 Standort4.3
# DE0000505050500000000000000000799 Kabel 631, Eingang 2 Standort4.4
# DE0006060606000000000000011004973 DE0006060606000000000000011004973 1-1:1.9.1 Standort5
# DE0000606060600000000000011047601 DE0000606060600000000000011047601 1-1:1.9.1 Standort6
# DE0007070707000000000000011048154 DE0007070707000000000000011048154 1-1:1.9.1 Standort7
Und so soll die Text-Datei nach dem durchlaufen der Batch-Datei aussehen:
# DE0000101010100000000000000001101 DE0000101010100000000000000001101 1-1:2.9.1 Standort1
# DE0010101010100000000000011001916 DE0010101010100000000000011001916 1-1:1.9.1 Standort2
# DE0002020202000000000000000000798 DE0002020202000000000000000000798 1-1:3.9.1 Standort3.1
# DE0000202020200000000000000000798 DE0000202020200000000000000000798 1-1:4.9.1 Standort3.2
# DE0003030303000000000000000000798 DE0003030303000000000000000000798 Standort3.3
# DE0000303030300000000000000000798 DE0000303030300000000000000000798 Standort3.4
# DE0004040404000000000000000000799 DE0004040404000000000000000000799 1-1:3.9.1 Standort4.1
# DE0000404040400000000000000000799 DE0000404040400000000000000000799 1-1:4.9.1 Standort4.2
# DE0005050505000000000000000000799 DE0005050505000000000000000000799 Standort4.3
# DE0000505050500000000000000000799 DE0000505050500000000000000000799 Standort4.4
# DE0006060606000000000000011004973 DE0006060606000000000000011004973 1-1:1.9.1 Standort5
# DE0000606060600000000000011047601 DE0000606060600000000000011047601 1-1:1.9.1 Standort6
# DE0007070707000000000000011048154 DE0007070707000000000000011048154 1-1:1.9.1 Standort7
Dort wo im oberen Ausschnitt Kabel 630/631 Eingang 1/2 steht muss stattdessen der Code der direkt davor steht nochmal stehen.
IST:
# DE0002020202000000000000000000798 Kabel 630, Eingang 1 1-1:3.9.1 Standort3.1
SOLL:
# DE0002020202000000000000000000798 DE0002020202000000000000000000798 1-1:3.9.1 Standort3.1
Der gesamte Rest der Datei ist aber auch wichtig und muss komplett mit kopiert werden, so dass die neue Datei genau den gleichen Inhalt darstellt wie die alte, aber mit den 8 geänderten Zeilen.
Ich habe leider noch keinen genauen Ansatz und hoffe ich habe mich verständlich ausgedrückt und dass ihr mir helfen könnt!
Vielen Dank schonmal im Voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 162583
Url: https://administrator.de/forum/inhalt-einer-txt-datei-kopieren-und-dazu-8-zeilen-umbenennen-162583.html
Ausgedruckt am: 06.04.2025 um 19:04 Uhr
6 Kommentare
Neuester Kommentar
Hallo!
Nachdem Dir nach einigen Stunden immer noch niemand geantwortet hat, vermute ich mal, dass es daran liegt, dass Deine Fragestellung etwas unklar ist...
evtl könntest Du (evtl. vernünftig formatiert mit < code > bzw. nach dem Ende < / code > - nat. ohne lerrzeichen) einige Zeilen deiner test.txt posten und anschließend daran, wie das Teil nach der bearbeitung aussehen soll...
bzw.: woran erkennt man die von Dir gesuchten Zeilen???
lg
Nachdem Dir nach einigen Stunden immer noch niemand geantwortet hat, vermute ich mal, dass es daran liegt, dass Deine Fragestellung etwas unklar ist...
evtl könntest Du (evtl. vernünftig formatiert mit < code > bzw. nach dem Ende < / code > - nat. ohne lerrzeichen) einige Zeilen deiner test.txt posten und anschließend daran, wie das Teil nach der bearbeitung aussehen soll...
bzw.: woran erkennt man die von Dir gesuchten Zeilen???
lg
moin FlorianHH,
klar ham wir nen Tipp oder noch besser gleich die passende Batch.
Gruß Phil
klar ham wir nen Tipp oder noch besser gleich die passende Batch.
@echo off&setlocal disabledelayedexpansion
set "Datei=Datei.txt"
set "Ausgabe=Datei2.txt"
set "Suche=Eingang"
set "Suche2=Kabel"
set "Ersetzen=!line:~0,36!!line:~2,33!!line:~56!"
findstr /n "%Suche%" "%Datei%"|findstr "%Suche2%">"%temp%\Suche"
findstr /n "^" "%Datei%">"%temp%\Numbered"
for /f "usebackq delims=:" %%i in ("%temp%\Suche") do (
if defined Firstline for /f %%j in ('set /a "A = %%i - BeforeLine"') do (
if %%j equ 1 (
for /f %%k in ('set /a "A = %%i - Firstline"') do (
if %%k equ 7 set "Lastline=%%i"
if %%k equ 8 set "Firstline="&set "Lastline="
)
) else if not defined Lastline set "Firstline="
)
if not defined FirstLine set "Firstline=%%i"
set "BeforeLine=%%i"
)
(
for /f "usebackq delims=" %%i in ("%temp%\Numbered") do (
set "Line=%%i"
setlocal enabledelayedexpansion
for /f "delims=:" %%j in ("%%i") do (
if %%j geq %Firstline% if %%j leq %lastline% (
set "Line=!Line:*:=!
set "Line=%Ersetzen%"
echo.!Line!
set "OK=1"
)
if not defined OK (
set "Line=!Line:*:=!
echo.!Line!
) )
endlocal
)
)>"%Ausgabe%"
Gruß Phil