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

Mitglied: Andreas72

Andreas72 (Level 1) - Jetzt verbinden

25.08.2013 um 00:21 Uhr, 1661 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 PathoeBatch & Shell2 Kommentare

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

Batch & Shell

Per Batch bestimmte Zeilen kopieren

gelöst Frage von Grisu84Batch & Shell9 Kommentare

Hallo, ich habe probiert via Batch aus einer txt alle Zeilen die mit "Name" beginnen in eine andere txt ...

Sonstige Systeme

TAPI Schnittstelle liefert zu viele Stellen

Frage von Jan1986Sonstige Systeme2 Kommentare

Hallo zusammen, unsere TAPi Schnittstelle welche über die Swyx Telefonanalge mit installiert wurde, liefert uns immer 6 Stellen mehr ...

Neue Wissensbeiträge
Ausbildung

Linux-Ausstieg in Niedersachsen - Windows statt Bugfix

Information von StefanKittel vor 2 TagenAusbildung35 Kommentare

Sind ja nur Steuergelder

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 4 TagenSpeicherkarten5 Kommentare

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 4 TagenSicherheit1 Kommentar

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 5 TagenHardware4 Kommentare

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Passwortwechsel Zeitpunkt festlegen
Frage von Looser27Windows Userverwaltung27 Kommentare

Guten Morgen liebe Kolleginnen und Kollegen, da es eine Userin in meinem Urlaub geschafft hat, sich vom AD vollständig ...

Windows Server
Probleme im AD am Außenstandort
gelöst Frage von emeriksWindows Server19 Kommentare

Hi, wir haben ein Problem mit AD und GPO am Außenstandort und ich stehe momentan mächtig auf dem Schlauch. ...

Switche und Hubs
POE-Switche
gelöst Frage von MiStSwitche und Hubs13 Kommentare

Guten Morgen, ich überlege ob ich in unserem Netzwerk die aktuellen Switche (D-LINK DGS-1210-28) durch PoE-Switche ersetzen soll. Der ...

Windows Server
DNS - Bedingte Weiterleitung
gelöst Frage von m8ichaelWindows Server11 Kommentare

Guten Tag zusammen, ich stehe gerade bzgl. einer bedingten DNS-Weiterleitung etwas auf dem Schlauch: Ich möchte, dass für bestimmte ...