Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Inhalt einer .txt-Datei kopieren und dazu 8 Zeilen umbenennen

Frage Entwicklung Batch & Shell

Mitglied: FlorianHH

FlorianHH (Level 1) - Jetzt verbinden

14.03.2011, aktualisiert 13:16 Uhr, 4051 Aufrufe, 6 Kommentare

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:

01.
# DE0000101010100000000000000001101 DE0000101010100000000000000001101 1-1:2.9.1 Standort1 
02.
# DE0010101010100000000000011001916 DE0010101010100000000000011001916 1-1:1.9.1 Standort2 
03.
# DE0002020202000000000000000000798 Kabel 630, Eingang 1 1-1:3.9.1 Standort3.1 
04.
# DE0000202020200000000000000000798 Kabel 630, Eingang 1 1-1:4.9.1 Standort3.2 
05.
# DE0003030303000000000000000000798 Kabel 630, Eingang 1 Standort3.3 
06.
# DE0000303030300000000000000000798 Kabel 630, Eingang 1 Standort3.4 
07.
# DE0004040404000000000000000000799 Kabel 631, Eingang 2 1-1:3.9.1 Standort4.1 
08.
# DE0000404040400000000000000000799 Kabel 631, Eingang 2 1-1:4.9.1 Standort4.2 
09.
# DE0005050505000000000000000000799 Kabel 631, Eingang 2 Standort4.3 
10.
# DE0000505050500000000000000000799 Kabel 631, Eingang 2 Standort4.4 
11.
# DE0006060606000000000000011004973 DE0006060606000000000000011004973 1-1:1.9.1 Standort5 
12.
# DE0000606060600000000000011047601 DE0000606060600000000000011047601 1-1:1.9.1 Standort6 
13.
# DE0007070707000000000000011048154 DE0007070707000000000000011048154 1-1:1.9.1 Standort7

Und so soll die Text-Datei nach dem durchlaufen der Batch-Datei aussehen:
01.
# DE0000101010100000000000000001101 DE0000101010100000000000000001101 1-1:2.9.1 Standort1 
02.
# DE0010101010100000000000011001916 DE0010101010100000000000011001916 1-1:1.9.1 Standort2 
03.
# DE0002020202000000000000000000798 DE0002020202000000000000000000798 1-1:3.9.1 Standort3.1 
04.
# DE0000202020200000000000000000798 DE0000202020200000000000000000798 1-1:4.9.1 Standort3.2 
05.
# DE0003030303000000000000000000798 DE0003030303000000000000000000798 Standort3.3 
06.
# DE0000303030300000000000000000798 DE0000303030300000000000000000798 Standort3.4 
07.
# DE0004040404000000000000000000799 DE0004040404000000000000000000799 1-1:3.9.1 Standort4.1 
08.
# DE0000404040400000000000000000799 DE0000404040400000000000000000799 1-1:4.9.1 Standort4.2 
09.
# DE0005050505000000000000000000799 DE0005050505000000000000000000799 Standort4.3 
10.
# DE0000505050500000000000000000799 DE0000505050500000000000000000799 Standort4.4 
11.
# DE0006060606000000000000011004973 DE0006060606000000000000011004973 1-1:1.9.1 Standort5 
12.
# DE0000606060600000000000011047601 DE0000606060600000000000011047601 1-1:1.9.1 Standort6 
13.
# 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:
01.
# DE0002020202000000000000000000798 Kabel 630, Eingang 1 1-1:3.9.1 Standort3.1
SOLL:
01.
# 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!
Mitglied: Edi.Pfisterer
14.03.2011 um 12:52 Uhr
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
Bitte warten ..
Mitglied: FlorianHH
14.03.2011 um 13:18 Uhr
Hallo,

Erstmal danke für die Antwort und den Tipp!

Habe meinen Beitrag editiert und erweitert.

Hoffe es ist jetzt verständlicher was ich erreichen möchte

lg
Bitte warten ..
Mitglied: FlorianHH
14.03.2011 um 14:16 Uhr
Keiner eine Idee oder einen Tipp?

Oder ist meine Fragestellung immernoch zu unklar vielleicht?

Ich hoffe doch sowas ist überhaupt möglich mit einer Batch was ich da vor habe zu realisieren...
Bitte warten ..
Mitglied: pieh-ejdsch
14.03.2011 um 14:25 Uhr
moin FlorianHH,

klar ham wir nen Tipp oder noch besser gleich die passende Batch.

01.
@echo off&setlocal disabledelayedexpansion 
02.
 
03.
set "Datei=Datei.txt" 
04.
set "Ausgabe=Datei2.txt" 
05.
 
06.
set "Suche=Eingang" 
07.
set "Suche2=Kabel" 
08.
set "Ersetzen=!line:~0,36!!line:~2,33!!line:~56!" 
09.
 
10.
findstr /n "%Suche%" "%Datei%"|findstr "%Suche2%">"%temp%\Suche" 
11.
findstr /n "^" "%Datei%">"%temp%\Numbered" 
12.
for /f "usebackq delims=:" %%i in ("%temp%\Suche") do ( 
13.
	if defined Firstline for /f %%j in ('set /a "A = %%i - BeforeLine"') do ( 
14.
		if %%j equ 1 ( 
15.
			for /f %%k in ('set /a "A = %%i - Firstline"') do ( 
16.
				if %%k equ 7 set "Lastline=%%i" 
17.
				if %%k equ 8 set "Firstline="&set "Lastline=" 
18.
19.
		) else if not defined Lastline set "Firstline=" 
20.
21.
	if not defined FirstLine set "Firstline=%%i" 
22.
	set "BeforeLine=%%i" 
23.
24.
25.
for /f "usebackq delims=" %%i in ("%temp%\Numbered") do ( 
26.
	set "Line=%%i" 
27.
	setlocal enabledelayedexpansion 
28.
	for /f "delims=:" %%j in ("%%i") do ( 
29.
		if %%j geq %Firstline% if %%j leq %lastline% ( 
30.
			set "Line=!Line:*:=! 
31.
			set "Line=%Ersetzen%" 
32.
			echo.!Line! 
33.
			set "OK=1" 
34.
35.
		if not defined OK ( 
36.
			set "Line=!Line:*:=! 
37.
			echo.!Line! 
38.
	)	) 
39.
	endlocal 
40.
 
41.
42.
)>"%Ausgabe%"
Gruß Phil
Bitte warten ..
Mitglied: FlorianHH
14.03.2011 um 14:30 Uhr
wow....

Das war mein erster Gedanke eben :D

Habs direkt ausprobiert und es funktioniert einwandfrei !!!

Vielen, vielen Dank Phil !!!
Bitte warten ..
Mitglied: pieh-ejdsch
14.03.2011 um 14:35 Uhr
setzt Du dann Bitte noch die Frage auf gelöst mit dem grünen Hacken

Danke

Gruß Phil
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

Webentwicklung
HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

Batch & Shell
Merkwürdige Zeilenformatierung in txt Datei (3)

Frage von miczar zum Thema Batch & Shell ...

Batch & Shell
gelöst Ordner per Batch verschieben, Datei kopieren (2)

Frage von Shape.Shifter zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...