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

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, 8385 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 ..
Ähnliche Inhalte
Batch & Shell
Datum vergleichen
gelöst Frage von Klaus20Batch & Shell11 Kommentare

Hallo Zusammen, vielleicht kann mir jemand (wie schon öfters) mir bei einer Abfrage helfen. Ich möchte gerne falls das ...

Batch & Shell
FTP Datei mit aktuellem Datum Übertragen - Batch Script
Frage von spyware96Batch & Shell10 Kommentare

Hi, ich soll ein Script (Batch-Datei) Schreiben welches folgendes macht: - Ein Backup auf einem Server zu einem .zip-Archiv ...

Batch & Shell
Dateien vergleichen
gelöst Frage von SpacewarpBatch & Shell4 Kommentare

Hallo, vorweg ich bin neu hier. Meine Problem ist das ich zwei TXT Dateien habe. Bsp.: -Datei1.txt- User Programm ...

Batch & Shell
Datei wird am Client erstellt ohne das sie am Ftp Server existiert
gelöst Frage von dax4funBatch & Shell4 Kommentare

Hi, Habe das hier irgendwie hingebogen doch wenn die Datei am Server nicht existiert taucht sie am Client wieder ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 14 StundenBatch & Shell8 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 16 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Batch & Shell
Neuste Datei via PowerShell kopieren
gelöst Frage von kaiuwe28Batch & Shell11 Kommentare

Hallo zusammen, ich hatte mir mit Hilfe der Suche im Forum einen kleinen Code von colinardo rausgesucht und versucht ...