Top-Themen

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

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, 1645 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 ..
Ähnliche Inhalte
Linux
Script um Zeilen aus einer Datei an eine bestimmte Stelle in einer anderen Datei zu kopieren
Frage von grepper91Linux2 Kommentare

Hallo zusammen, ich habe folgendes Problem, ich habe Paketlisten die ungefähr so aussehen: ;Paket1;x86_64;;;# ;Paket2;x86_64;;;# ;Paket3;x86_64;;;# Nun habe ich ...

Batch & Shell
Sed - Zeile mit bestimmten Anfang löschen
gelöst Frage von PanubuBatch & Shell2 Kommentare

Hallo zusammen, ich habe schon mal ein wenig mit sed "herumgespielt" aber noch nicht wirklich zu dem Ergebnis gekommen, ...

Batch & Shell
Text aus einem Textfile auslesen und in Zeile 1 hinein kopieren
Frage von IronangelBatch & Shell2 Kommentare

Hallo zusammen, dies ist mein erster Beitrag. Ich hoffe hier Hilfe zu finden. Ich benötige einen Befehl für ein ...

Batch & Shell
BATCH: Textdatei ab einer bestimmten Zeile kopieren
gelöst Frage von lwentzBatch & Shell3 Kommentare

Hallo, ich habe folgende Anforderung: Ich möchte ein Log-File (Textdatei mit einem Eintrag pro Zeile) in ein neues Log-File ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 StundenWindows 10

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 3 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 18 StundenInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 21 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...