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

Text in Datei auslesen, vergleichen und evtl. ersetzen

Frage Entwicklung

Mitglied: Stev

Stev (Level 1) - Jetzt verbinden

11.11.2008, aktualisiert 19:58 Uhr, 3013 Aufrufe, 1 Kommentar

Hallo,

habe folgende Problemstellung:
In einem Verzeichnis werden automatisch Dateien geschrieben.
Diese beinhalten in Zeile 1 in der Spalte 91 bis 99 ein Datum (Datum 1)
Ich möchte dieses Datum per Script auslesen und dann mit dem Datum in Zeile 3 Spalte 112 - 120 (Datum 2) vergleichen.

Ist Datum 2 älter als Datum 1 dann ersetze Datum 2 mit Datum 1.

Das Datumsformat ist ddmmyyyy. Ich würde dieses Datum in drei Variablen einlesen und dann Rückwarts wieder zusammen setzen:
Datum_1=Jahr_1*10000+Monat_1*100+Tag_1
Datum_2=Jahr_2*10000+Monat_2*100+Tag_2

So wäre mein Ansatz.......

Hat jemand eine Idee, wie ich das lösen kann ?
Mitglied: bastla
11.11.2008 um 19:58 Uhr
Hallo Stev!

Da Du ja ohnehin die einzelnen Datumsbestandteile als Teilstrings benötigt, kannst Du das Datum auch ohner Rechnerei gleich wieder zusammensetzen, zB
01.
@echo off & setlocal 
02.
set "bak=.bak" 
03.
for %%i in (D:\Dateien\*.txt) do call :ProcessFile "%%i" 
04.
goto :eof 
05.
 
06.
:ProcessFile 
07.
set /p Zeile1=<%1 
08.
set Zeile3= 
09.
for /f "usebackq skip=2 delims=" %%i in (%1) do if not defined Zeile3 set "Zeile3=%%i" 
10.
set Datum1=%Zeile1:~94,4%%Zeile1:~92,2%%Zeile1:~90,2% 
11.
set Datum3=%Zeile3:~115,4%%Zeile3:~113,2%%Zeile3:~111,2% 
12.
if %Datum1% leq %Datum3% goto :eof 
13.
 
14.
set Zeile2= 
15.
for /f "usebackq skip=1 delims=" %%i in (%1) do if not defined Zeile2 set "Zeile2=%%i" 
16.
move %1 "%~1%bak%" 
17.
>%1  echo %Zeile1% 
18.
>>%1 echo %Zeile2% 
19.
>>%1 echo %Zeile3:~,111%%Zeile1:~90,8%%Zeile3:~119% 
20.
>>%1 more +3 "%~1%bak%" 
21.
REM del "%~1%bak%" 
22.
goto :eof
Da Deine Beschreibung hinsichtlich der Positionen nicht ganz eindeutig sind (die Spalten 91 - 99 umfassen 9 Zeichen), bin ich davon ausgegangen, dass die Anfangsposition korrekt ist (und daher vom Zeilenanfang bis zur Angabe des Wertes für dem "Tag" 90 Zeichen zu überspringen sind).

Da nicht gleichzeitig aus der Datei gelesen und in sie geschrieben werden kann, entsteht als "Abfallprodukt" eine Sicherungskopie (mit dem Zusatz ".bak") - falls diese nicht benötigt wird, das "REM" vor dem Löschbefehl entfernen.

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Linux
gelöst Find Ausgabe in formatierte text Datei umleiten (5)

Frage von MadM4x zum Thema Linux ...

Batch & Shell
gelöst Zeiten in .txt datei auslesen und Differenz berechnen (14)

Frage von meex87 zum Thema Batch & Shell ...

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

Frage von 126594 zum Thema PHP ...

Batch & Shell
gelöst For Schleife für Abgleich mit Text-Datei und Unterverzeichnisse (4)

Frage von grisur zum Thema Batch & Shell ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Windows Systemdateien
NTFS und die Defragmentierung (26)

Frage von WinLiCLI zum Thema Windows Systemdateien ...

LAN, WAN, Wireless
Zwei Subnetze mit je eigenem Router und Internetzugang verbinden (18)

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

Windows Server
WIndows Server 2016 core auf dem Intel NUC NUC5i5RYK i5 5250U (17)

Frage von IxxZett zum Thema Windows Server ...