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

Erstellungsdatum einer Datei mit dem aktuellen Datum vergleichen

Frage Entwicklung Batch & Shell

Mitglied: 72114

72114 (Level 1)

20.11.2008, aktualisiert 21.11.2008, 9067 Aufrufe, 8 Kommentare

Guten Morgen!

Ich habe hier ein kleines Problem. Ich habe einen Ordner mit Unterordnern. In diesen Ordnern befinden sich einige Exceldateien. Diese Dateien werden täglich automatisch aktualisiert. Manchmal kommt es aber vor, dass die eine oder andere Datei nicht aktualisiert wurde.

Nun versuche ich gerade eine Batchdatei zu erstellen die das Erstellungsdatum dieser Exceldateien mit dem aktuellen Datum vergleicht. Wenn das Erstellungsdatum mit dem aktuellen Datum übereinstimmt soll nichts unternommen werden. Wenn aber das Erstellungsdatum und das aktuelle Datum nicht überinstimmt, soll eine Email an einen bestimmten Benutzer verschickt werden, mit dem Hinweis die Datei(en) mit dem Dateinamen XY wurde nicht aktualisiert.

Ist das möglich und wenn ja wie realisiere ich das ganze in einem Batch?

Danke schon mal für die Hilfe!
Mitglied: Biber
20.11.2008 um 13:03 Uhr
Moin Alex3103,

willkommen im Forum.
Ähnliche Fragestellungen haben wir schon ein paar mal im "Batch & Shell".

Deshalb nur in Kurzfassung:
a) alle *.xls-Dateien im aktuellen Verzeichnis mit Erstellungsdatum ungleich heute:
(Beispiel am CMD-Prompt)
01.
for %i in (*.xls) do @echo %~ti|FindStr /v "^%date%">nul && echo %i 
[Im Batch zwei %-Zeichen überall dort, wo jetzt eins vor der Variable %i steht.]
b) Ggf Umleiten der Ausgabe mit einem angehängten ">>"%temp%\%date%.lst" in eine Textdatei.
c) Senden dieser Liste "%temp%\%date%.lst" mittels Blat.exe (Link ist unter Links in Batch & Shell).

Grüße
Biber
Bitte warten ..
Mitglied: 72114
20.11.2008 um 14:43 Uhr
Hallo Biber,

danke für die schnelle Antwort. Leider bin ich ein total Batch-Anfänger. Außer Anmeldescripts habe ich noch nichts dergleichen erstellt. Kannst Du mir vielleicht diese Zeile etwas genauer erklären? Wenn ich diese Datei abändere (%%i statt %i und die Ausgabe in eine Testdatei) öffnet sich kurz die Dos-Box aber es passiert sonst nichts...

Gruß

Alex
Bitte warten ..
Mitglied: Biber
20.11.2008 um 17:03 Uhr
Moin Alex3103,

ich versuche mal die Zeile oben zu erläutern - empfehle aber ausdrücklich, die einzelnen Teile auch erstmal am CMD-Prompt durchzuspielen.

Die ganze CMD-Prompt-Zeile
01.
for %i in (*.xls) do @echo %~ti|FindStr /v "^%date%">nul && echo %i 
.... im Detail:
for %i in (*.xls) ........
= führe nacheinander für alle Dateien im aktuellen Verzeichnis %i, mit dem Dateinamen irgendwas.xls ...
do @echo %~ti
= .... mach mir eine Bildschirmausgabe des Datums %~ti der einzelnen Datei....
|FindStr /v "^%date%">nul
.... und pipe (das ist dieses Zeichen "|") = leite die Ausgabe direkt aus Input für den FindStr-Befehl weiter
... FindStr soll in dieser Ausgabe nach allen Zeilen suchen, die
....- NICHT (Parameter /v)
....- am Anfang der Zeile (Parameter ^)
... das aktuelle Datum %date%
...enthalten
&& echo %i
.... und wenn Du ein Dateidatum gefunden hast, das nicht von heute ist, gib den Dateinamen aus.

Du solltest (spätestens in einer Batch-Version) noch die Wildcad-Angabe *.xls um den konkreten Pfad ergänzen.
Also z.B. D:\Daten\Tabellen\*.xls oder wo-auch-immer deine Tabellen liegen.

Grüße
Biber
Bitte warten ..
Mitglied: 72114
21.11.2008 um 10:18 Uhr
Guten Morgen Biber,

danke für die Erklärung. Jetzt bin ich wieder ein Stück schlauer Leider bekomme ich bei der Ausführung des Befehls immer einen Syntaxfehler

Gruß

Alex
Bitte warten ..
Mitglied: 72114
21.11.2008 um 11:23 Uhr
So, um noch ein bisschen genauer zu werden ist hier mal der Quellcode. Kann man das so schreiben? Die Emailparameter kannst Du ignorieren. Die benötige dann später für blat.

REM Script zur Überprüfung des Änderungsdatum

REM Hier wir der Zielordner definiert
SET Zielordner=o:\allgemein\mis\_public\*.xls

REM Hier werden die Email-Parameter gesetzt
SET Sender=
SET Password=
SET SMTPServer=
SET Recipient=

REM Prüfung ob Erstellungsdatum ungleich heutigem Datum
for %%i in (%Zielordner%) do @echo %~ti|FindStr /v "^%date%">nul && echo %%i


Es öffnet sich kurz die Dosbox, aber sonst passiert nichts weiter.

In dem Ordner _public befinden sich XLS-Dateien von heute und gestern. Also sollte doch eigentlich in der Dosbox etwas zu sehen sein, oder?
Bitte warten ..
Mitglied: Biber
21.11.2008 um 11:47 Uhr
Moin Alex3103,

<OT>
....schon wieder November....
Zeit der Besinnung und der Rückblicke...
....ein kurzer Blick zurück:
  • Vor 100 Jahren: zu Beginn der so genannten "industriellen Revolution" wurden die Kotflügel erfunden.
  • Vor 50 Jahren: in fast allen Haushalten, in denen ein Keyboard existierte, wurde dieses ausschlißlich zum manuellen Erzeugen von Tanznusik genutzt
  • Vor 20 Jahren zu Beginn der "PC-Revolution" wurde als zeitgemäßes Äquivalent zu o.g. Kotflügeln die so genannte Codeformatierung flächendeckend verbreitet.

Details zu den Formatierungsmöglichkeiten siehe in unseren FAQ.
Soll heißen: Hey, wenn sogar ich meinen Kot formatieren kann, schaffst Du das auch.
</OT>

Back to Fred.

a) Im Batch müssen ALLE Prozentzeichen vor dynamischen Variablen ( die %i und %j und %k von FOR-Anweisungen verdoppelt werden. Das gilt auch für "abgeleitete dynamische Variablen wie %~i oder %~ti oder %~dpnxi.
Also Ersetze::
for %%i in (%Zielordner%) do @echo %~ti...
Durch:
for %%i in (%Zielordner%) do @echo %%~ti....

b) wenn ich das lese:
Es öffnet sich kurz die Dosbox, aber sonst passiert nichts weiter.
...dann bekomme ich immer meine Migräne
Wie testet ihr denn Batche? Per Doppelklick via Explorer?

Magst Du evtl mal versuchen, wie sich der Ablauf gestaltet, wenn Du die Proof-of-Concept-Phase von einem geöffneten CMD-Prompt ("Start"-"Ausführen"->cmd) aus durchführst?

Grüße
Biber
Bitte warten ..
Mitglied: 72114
21.11.2008 um 15:10 Uhr
Hey Biber!

Erstmal Entschuldigung, das ich Dich hier verärgert habe. Aber wie schon gesagt, außer durch Anmeldescripte habe ich noch nie etwas mit Batchprogrammierung zu tun gehabt. Ich habe das fehlende %-Zeichen ergänzt und ich bekomme nun das erhoffte Ergbnis in der Eingabeaufforderung. Nun geht´s für mich nur noch ans modifizieren (Ausgabe in eine Datei + verschicken per Email). Danke für Deine Hilfe. Ich hoffe, dass ich Dich nicht nochmal belästigen muss.

Alex3103
Bitte warten ..
Mitglied: Biber
21.11.2008 um 15:28 Uhr
Moin Alex,

keine Sorge, Du hast mich nicht verärgert oder belästigt....
Eigentlich bin ja ein gaaanz Ruhiger und Stiller.
(Gerade gestern hat mir mein Cheffe einen Taschenspiegel vor dem Mund gehalten, um festzustellen, ob da irgendetwas beschlägt).
Versuche bitte erstmal, über die Forumssuche weiterzukommen.
Aber wenn es klemmt.... einfach fragen.

Schönes Wochenende
Biber
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Aktueller Besitzer der aktuellen Datei herausfinden und in Variable schreiben (11)

Frage von Peter32 zum Thema Batch & Shell ...

Batch & Shell
gelöst In Html-Datei per Batchdatei das Datum und die Uhrzeit eintragen (2)

Frage von Hakiegold zum Thema Batch & Shell ...

VB for Applications
gelöst Mit VBA im Monatskalender Datum suchen - aus anderer Datei einfügen (6)

Frage von Otto1699 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...