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

Datum einer Datei vergleichen (FTP-Srv - Windows-Client)

Frage Entwicklung Batch & Shell

Mitglied: Flauschbobbel

Flauschbobbel (Level 1) - Jetzt verbinden

31.07.2008, aktualisiert 04.08.2008, 8323 Aufrufe, 8 Kommentare

Hallo Zusammen,

ich habe ein kleines Problem und komme trotz Recherchen hier im Forum nicht wirklich weiter.

Ich möchte auf einem FTP-Server prüfen, ob eine Datei mit neuerem Datum und Uhrzeit als die gleiche Datei
auf dem Windows Client vorhanden ist. Wenn die Datei auf dem FTP-Srv. neuer ist, dann soll die Datei
auf den Client kopiert werden.

Hier im Forum habe ich schon Anregungen gefunden um mittels Skript eine Datei vom FTP-Srv zu kopieren.
Das funktioniert auch bereits einwandfrei. Beim Vergleichen des Datum hänge ich etwas.

Ich hole mit zunächst via FTP den Inhalt des Verzeichnisses. Das sieht dann so aus (FTP> dir /verzeichnis/verz):

01.
total 128 
02.
-rw-rw-r--   1 oracle     dba          18329 Jun  2 11:51 AA_RO_Export_20080602115111.csv 
03.
-rw-rw-r--   1 oracle     dba              0 Jun  2 11:51 AA_RO_Steuerung_20080602.err 
04.
-rw-r--r--   1 ideeu-1    users         9339 Jun 12 16:18 rt.csv 
05.
-rw-rw-r--   1 oracle     dba          18329 Jun  2 11:51 rt_org.csv
In meinem Verzeichnis auf dem WinXP-Client sieht das so aus (dir rt.csv):

01.
 Datentr„ger in Laufwerk D: ist Daten bitte selbst sichern! 
02.
 Volumeseriennummer: DCAE-2CF2 
03.
 
04.
 Verzeichnis von D:\users\local\scripts 
05.
 
06.
29.05.2008  14:33             9.322 RT.csv 
07.
               1 Datei(en)          9.322 Bytes 
08.
               0 Verzeichnis(se), 51.177.656.320 Bytes frei
Nun möchte ich also das Datum der Datei RT.CSV vom FTP-Server mit der lokalen Version vergleichen.
(Ich muss erst das Datum vergleichen, bevor ich die Datei vom FTP-Server hole, denn
nach dem kopieren vom FTP-Server hat die Datei das aktuelle Datum.)
Wenn die Datei auf dem FTP-Server neuer ist, dann soll er sie vom FTP-Srv kopieren (das funktioniert bereits einwandfrei)
um sie weiter zu verarbeiten (auch soweit OK).
Wenn die Datei lokal auf dem Client neuer ist, dann möchte ich die lokale Version verarbeiten.

"biber" sei Dank, habe ich im Forum ein Schnipsel gefunden um das Datum der Datei auf dem XP-Client
auszulesen:
01.
for /f %%i in ('type E:\tmp.txt^|find /i "RT.csv"') do @set MyFileDate=%%i  
02.
echo %myfiledate%
So bekomme ich zumindest das Datum raus... Wie aber die Uhrzeit?

Wie kann ich denn bei den beiden Dateien das Datum/Uhrzeit vergleichen?
Sollte mit Bordmitteln zu machen sein, externe Tools kann/darf ich nicht einsetzen.
Habe im Forum hier schon gesucht, aber nichts für mich passendes gefunden.
Könnt ihr mir weiterhelfen?

Danke,
Flauschbobbel
Mitglied: bastla
31.07.2008 um 17:06 Uhr
Hallo Flauschbobbel!

Eigentlich genügt ein
01.
for %%i in ("D:\Deine Datei.txt") do for /f "tokens=1-2" %%a in ("%%~ti") do set "Datum=%%a" & set "Zeit=%%b"
Grüße
bastla
Bitte warten ..
Mitglied: Flauschbobbel
31.07.2008 um 17:31 Uhr
Hallo bastla,

Danke, habe ich gemacht, das funktioniert auch soweit. Wie sieht das aber mit der anderen Liste aus? Wie erhalte ich hier das Datum um es mit dem ermittelten Wert zu vergleichen? Wie löse ich das Vergleichen? Kannst Du mir hier noch weiterhelfen?
Was macht denn das ("%%~ti") in dem genannten Vorschlag?

Grüße,
Flauschbobbel
Bitte warten ..
Mitglied: Biber
31.07.2008 um 20:44 Uhr
Moin Flauschbobbel,

wenn Du zwei Datums/Zeit-Werte vergeleichen willst, die Dir nur als zufällig formatierter Text vorliegen, dann musst Du Dir wohl (oder übel) einen eigenen Timestamp zusammenbraten.
Also einen numerischen Wert, mit dem Du dann einen simplen Kleiner/Größer-Vergleich abkaspern kannst.

Beispiel am CMD-Prompt, der erste Befehl liefert den formatierten Datums/Zeit-String:
01.
>for %i in (x*.txt) do @echo %~ti 
02.
03.04.08 22:16 
03.
>for %i in (x*.txt) do @For /f "tokens=1-3 delims=.: " %a in ("%~ti") do echo set /a dat=20%c%b%a 
04.
>for %i in (x*.txt) do @For /f "tokens=4,5 delims=.: " %a in ("%~ti") do echo set /a tim=1%a%b 
05.
set /a tim=12216
--> also hast Du aus Datum "03.04.08" einen Zahl-Wert 20080408 gezaubert und aus einer Zeit "22:16" auch einen vergleichbaren Wert.

Im Regelfall sollte der Datumsvergleich ja genügen, bei gleichem Datum kannst Du zusätzlich noch die Zeitwerte prüfen.

Grüße
Biber

Irgendwo hab ich auch mal ein Tutorial zu dem Thema gelesen...
Bitte warten ..
Mitglied: bastla
31.07.2008 um 21:28 Uhr
Hallo Flauschbobbel und Biber!

Bei mir wird das Jahr mit "%~ti" vierstellig ausgegeben - da ich heute ohnehin schon bezichtigt wurde, die Robustheit von Batchen zu fördern , schlage ich eine kleine Anpassung vor:
01.
@echo off & setlocal 
02.
:: %1 = Pfad der lokalen Datei 
03.
for %%i in (%~1) do For /f "tokens=1-5 delims=.: " %%a in ("%%~ti") do set TimestampLocal=20%%c%%b%%a%%d%%e 
04.
set TimestampLocal=%TimestampLocal:~-12% 
05.
echo %TimestampLocal%
Damit hätten wir den Timestamp (die Zeit gleich mit reinzunehmen kostet ja eigentlich weniger, als zuerst zu schauen, ob wir sie überhaupt brauchen) für die lokale Datei.

Aus dem geposteten ftp-Inhaltsverzeichnis ließe sich der Timestamp so erzeugen:
01.
@echo off & setlocal 
02.
set Jahr=2008 
03.
 
04.
:: %1 = Datei, deren Datum gelesen werden soll 
05.
:: %2 = Datei mit Inhaltsverzeichnis 
06.
 
07.
::DATA Jan 01 
08.
::DATA Feb 02 
09.
::DATA Mar 03 
10.
::DATA Apr 04 
11.
::DATA May 05 
12.
::DATA Jun 06 
13.
::DATA Jul 07 
14.
::DATA Aug 08 
15.
::DATA Sep 09 
16.
::DATA Oct 10 
17.
::DATA Nov 11 
18.
::DATA Dec 12 
19.
 
20.
for /f "tokens=6-8" %%a in ('findstr /i /c:" %~1" "%~2"') do ( 
21.
	for /f "tokens=3" %%m in ('findstr /b /c:"::DATA %%a" "%~f0"') do set "Monat=%%m 
22.
	set /a Tag=100+%%b 
23.
	set Zeit=%%c 
24.
25.
set "TimestampFTP=%Jahr%%Monat%%Tag:~-2%%Zeit::=%" 
26.
echo %TimestampFTP%
Die Robustheit dieses Schnipsels hängt allerdings von den noch unbekannten Faktoren "Schreibweise einstelliger Uhrzeiten" und "Anzeige des Jahres für Dateien aus einem anderen als dem laufenden Jahr" ab (daher für's Erste auch einfach das Jahr als Konstante). Die Monatsnamensabkürzungen wären ebenfalls noch zu verifizieren.

Grüße
bastla
Bitte warten ..
Mitglied: paulepank
31.07.2008 um 23:59 Uhr
Hallo Flauschbobbel,

warum so umständlich. Wozu gibt es Wget mit der Option -N ?

cu paulepank
Bitte warten ..
Mitglied: Flauschbobbel
01.08.2008 um 00:06 Uhr
Hallo paulepank,

weil ich es nur mit Standardbordmitteln lösen muss. Wget gehört nun mal nicht in den Standardumfang von FTP.

Grüße,
Flauschbobbel
Bitte warten ..
Mitglied: 67369
01.08.2008 um 00:27 Uhr
Boardmittel ist die Netzwerkumgebung. Dort kann man eine Netzwerkressource hinzufügen (den FTP-Server) und hat so auch Zugriff auf Datum und Zeit einer Datei.
Bitte warten ..
Mitglied: Flauschbobbel
04.08.2008 um 18:38 Uhr
Herzlichen Dank an alle für Eure Unterstützung!

Ich habe bastla's Vorschlag umgesetzt, funktioniert soweit recht zufriedenstellend.

Grüße,
Flauschbobbel
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Windows Netzwerk
gelöst Bockiger Windows Client (6)

Frage von ProvidedLan zum Thema Windows Netzwerk ...

Windows Tools
Empfehlung Software Windows Client DDNS Update (6)

Frage von naishweb zum Thema Windows Tools ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...