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

In vielen Textfiles bestimmte Zeile kopieren, verändern und doppelt an den Anfang stellen

Frage Entwicklung Batch & Shell

Mitglied: Andreas72

Andreas72 (Level 1) - Jetzt verbinden

25.08.2013 um 00:21 Uhr, 1614 Aufrufe, 4 Kommentare, 2 Danke

Hallo zusammen,

bei einer Datenmigration habe ich ca. 2000 Textfiles, die ich für den Import bearbeiten muß nach folgendem Muster: Eine Zeile innerhalb der Datei mit "date: " am Anfang muß kopiert werden und dann mit "date1: " die erste und zweite Zeile der Datei darstellen. Also:
vorher:
(...)
date Sun, 25.08.13
(...)
nachher:
date1: Sun, 25.08.13
date1: Sun, 25.08.13
(...)
date: Sun, 25.08.13
(...)

Die Zeile "date" ist immer in einer unterschiedlichen Zeile, aber nur einmal innerhalb einer Datei.

Mit den beantworteten Fragen in dem Forum habe ich es bis zu:
date1: date1:
(...)
date: Sun, 25.08.13
(...)
gebracht. Da ich aber keine Batch oder VB Kenntnisse habe, komme ich jetzt nicht weiter.

Könnt Ihr mir bitte helfen ?
Danke
Andreas
Mitglied: bastla
25.08.2013, aktualisiert um 00:51 Uhr
Hallo Andreas72 und willkommen im Forum!

Das könnte etwa so gehen:
01.
@echo off & setlocal 
02.
set "Ordner=D:\Dein Ordner" 
03.
set "Suche=date" 
04.
 
05.
set "T=%temp%\tmp.txt" 
06.
for /f "delims=" %%i in ('dir /b/a-d "%Ordner%\*.txt"') do call :ProcessFile "%Ordner%\%%i" 
07.
del "%T%" 
08.
goto :eof 
09.
 
10.
:ProcessFile 
11.
set "Zeile=" 
12.
for /f "delims=" %%a in ('findstr /ib "%Suche%" %1') do set "Zeile=%%a" 
13.
if not defined Zeile ( 
14.
    echo "%Suche%" in Datei %1 nicht gefunden 
15.
    goto :eof 
16.
17.
move %1 "%T%" 
18.
 >%1 echo(%Zeile% 
19.
>>%1 echo(%Zeile% 
20.
>>%1 type "%T%" 
21.
goto :eof
Bitte zunächst nur auf Testdaten loslassen ...

Grüße
bastla
Bitte warten ..
Mitglied: Andreas72
25.08.2013 um 20:40 Uhr
Hallo bastla,
danke für die schnelle Antwort, hatte sie auch vergangene Nacht noch ausprobiert. Ich hatte dabei festgestellt, daß meine Daten etwas anders ausschauen als gedacht, den Suchstring angepaßt und es läuft prima. Allerdings müssen die beiden "date", die dann am Dateianfang zu stehen kommen, noch in "Datum" umbenannt werden. Ich hatte zwar aus anderen Ersetzen-Fragen Quelltext ausprobiert (hinter Zeile 19 einkopiert), und dann kam nur heraus:

Datum: Datum:
(...)
date: Sun, 25.08.13
(...)

Wie muß ich eine Ersetzen-Funktion machen ?
Zusatzfrage: Welche Funktion hat die offene Klammer in den Zeilen 18 und 19 ? Ohne diese lief es auch (ich habe mit dem Quelltext ein wenig experimentiert ).

Viele Grüße.

Andreas
Bitte warten ..
Mitglied: bastla
25.08.2013, aktualisiert 26.08.2013
Hallo Andreas72!

Wenn sich nach dem "date" am Zeilenanfang ein Leerzeichen befinden sollte, wäre das ganz einfach so zu lösen:

Zeile 12
for /f "tokens=1*" %%a in ('findstr /ib "%Suche%" %1') do set "Zeile=%%b"
Zeile 18 (Zeile 19 analog):
 >%1 echo Datum: %Zeile%
Ansonsten kannst Du in der Variablen %Zeile% "date" so durch "Datum" ersetzen (allerdings bei mehrfachem Auftreten dann jedes Vorkommen):
set "Zeile=%Zeile:date=Datum%"
Zusatzfrage: Welche Funktion hat die offene Klammer in den Zeilen 18 und 19 ? Ohne diese lief es auch
Die Klammer (könnte auch zB "." oder "\" sein) nach dem "echo" stammt noch aus einem ersten Ansatz und hatte nur den Zweck, die Ausgabe einer Leerzeile zu ermöglichen, falls die gesuchte Zeile nicht gefunden worden wäre - sie schadet zwar weiterhin nicht, kann aber, wenn ohnehin sichergestellt ist, dass es die "date"-Zeile in der Datei gibt, genauso wie die Zeilen 11 und 13 - 16 entfallen ...

Grüße
bastla
Bitte warten ..
Mitglied: Andreas72
25.08.2013, aktualisiert um 23:47 Uhr
Hallo bastla,
vielen Dank, es klappt nun damit. Einfacher als gedacht . Ich spiele mich mal mit der Lösung kommende Woche und falls ich noch Nachfragen habe, melde ich mich nochmal. Diese Frage markiere ich mit "gelöst".

Grüße.

Andreas
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...