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

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Neue Wissensbeiträge
Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
VPN Tunnel aufbauen (16)

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

Router & Routing
ASUS RT-N18U mit VPN Client hinter Fritzbox - Portforwarding (14)

Frage von marshall75000 zum Thema Router & Routing ...

Microsoft Office
Saubere HTML aus Word-Dokument (14)

Frage von peterpa zum Thema Microsoft Office ...

E-Mail
gelöst Probleme beim E-Mail Empfang (12)

Frage von TommyB83 zum Thema E-Mail ...