Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 4100 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Dateien nach Inhalt umbenennen (4)

Frage von Icemaniac zum Thema Batch & Shell ...

Microsoft Office
gelöst Excel VBA - Inhalte und Dateiname von txt-Dateien automatisch in Excel importieren (2)

Frage von Booster07 zum Thema Microsoft Office ...

PHP
gelöst TXT Datei auslesen und bestimmte Zeilen in Variable setzen (11)

Frage von 126594 zum Thema PHP ...

Neue Wissensbeiträge
Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(14)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

RedHat, CentOS, Fedora

Fedora 27 ist verfügbar

Information von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Windows Server
Kennwort vergessen bei Hyper vserver 2012r (12)

Frage von jensgebken zum Thema Windows Server ...

Linux Desktop
Bildschirmauflösung unter Linux festlegen (12)

Frage von itebob zum Thema Linux Desktop ...

Windows Userverwaltung
gelöst Administrator hat alle Rechte verloren (10)

Frage von mrdead zum Thema Windows Userverwaltung ...

DSL, VDSL
gelöst PfSense 2.4.1 an Telekom Entertain 50MBit VDSL BNG, IPTV funktioniert nicht (9)

Frage von stefanxx zum Thema DSL, VDSL ...