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, 4092 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 ...

Batch & Shell
gelöst Verzeichniss überwachen Datei kopieren und umbenennen (6)

Frage von fischle63 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Sicherheit

Millionen Euro in den Sand gesetzt?

(3)

Information von transocean zum Thema Sicherheit ...

Sicherheit

How I hacked hundreds of companies through their helpdesk

Information von SeaStorm zum Thema Sicherheit ...

Heiß diskutierte Inhalte
Firewall
gelöst Firewall Firmeneimsatz (22)

Frage von wiesi200 zum Thema Firewall ...

LAN, WAN, Wireless
Eine Netzwerkdose im Wechsel für zwei unterschiedliche Netze (11)

Frage von kartoffelesser zum Thema LAN, WAN, Wireless ...

Windows Server
ESXI Free Windows Server 2016 Datacenter aktivieren (10)

Frage von iDeathz zum Thema Windows Server ...

Windows Netzwerk
Ordner-Freigabe außerhalb der Domäne (9)

Frage von Remsboys zum Thema Windows Netzwerk ...