Bedingung in Abhängigkeit vom Alter einer Datei

Mitglied: cmichel

cmichel (Level 1) - Jetzt verbinden

24.08.2006, aktualisiert 04.09.2006, 9414 Aufrufe, 11 Kommentare

Hi @ all,

Ich hoffe jemand kann mir helfen:
Was ich brauche ist ein dos script, welches das alter einer bestimmten Datei abfragt
und dann in einer Bedingung auf eine bestimmte Position springt.

Wenn Datei älter als 30 min dann gehe dahin ansonsten gehe dorthin

Ich hoffe mal für die DOS Profis hier ist das eine 3min Sache ;)

MfG
Christof
Mitglied: bastla
27.08.2006 um 20:26 Uhr
Hallo Christof!

Da ich kein DOS-Profi bin kann ich nur eine Lösung per VB-Script anbieten:



Der folgende Beispielbatch überprüft die Datei "Z:\Test.txt" auf ein Alter von 30 Minuten
(Annahme: Die obige Script-Datei ist als ISOLD.vbs in "C:\Scripts" gespeichert):


HTH
bastla
Bitte warten ..
Mitglied: Biber
27.08.2006 um 21:50 Uhr
Moin cMichel,

nur eine Variation des Themas bzw. der Strategie....
Ich würde es ähnlich wie bastla machen, aber den VBS-Teil nur für die reine DateDiff-Ermittlung verwenden - und die Programmlogik (und Variabilität, also die Prüfung auf x Minuten) im Batch lassen.

Mein VBS-Schnipsel sähe sinngemäß so aus:

Der Aufruf wäre entsprechend
CScript //nologo GetFileMinutesvbs DeineDatei.xyz
...und die Rückgabe eine Zahl (geändert von ... Minuten).

Die Auswertung im Batch entsprechend:

Vorteil ist (für mich), dass ich die drei VBS-Zeilen schnell aus dem Batch heraus mit ECHO erzeugen kann.
Falls nicht das letzte Änderungsdatum das Kriterium ist, sondern das Entstehungsdatum, dann im VBS-Snippet ändern auf f.DateCreated.

Gruß
Biber
Bitte warten ..
Mitglied: cmichel
28.08.2006 um 08:38 Uhr
Hi ihr lieben,

Erstmal Vielen Dank für eure Mühe!
Leider müssen wir VB aussen vor lassen, da alles unter DOS abläuft.
Hintergrund ist das durchsuchen von Festplatten nach Dateienamen in eine txt Datei
Da dies sehr Zeitaufwendig ist brauch dies nicht bei jedem start der batch datei zu erfolgen.

Vielleicht eine andere Idee...
Man speichert die aktuelle Zeit zwischen und wenn 30 min vergangen sind soll er die Festplatten durchsuchen oder ansonsten kann der Teil übersprungen werden.
Vielleicht wäre das unter DOS machbar?

Vielen Dank für die Hilfe!

Gruß
Christof
Bitte warten ..
Mitglied: Biber
28.08.2006 um 09:18 Uhr
Moin Christof,

dann teile uns aber mit, von welchem Betriebssystem wir ausgehen müssen.
Ab Win2k sollte sich auch mit native Batch eine Lösung finden lassen - bei Win95/Win98 wird es sicherlich etwas holzig.

Gruß
Biber
Bitte warten ..
Mitglied: cmichel
03.09.2006 um 09:48 Uhr
Hallo Biber,

Das OS ist WinXP Prof.

Gruß
Christof
Bitte warten ..
Mitglied: Biber
03.09.2006 um 13:18 Uhr
Moin cmichel,

na, ich weiß nicht, ob Du das richtig verstanden hast...
Leider müssen wir VB aussen vor lassen, da alles unter DOS abläuft.
Es geht gar nicht um VB, sondern um VBSkript und überhaupt nicht um DOS, sondern um die CMD.exe

In Bereich "Batch & Shell" steht ein kleines Tutorial zum Thema "Umgang mit Datums- und Zeitvariablen im Batch" mit einer allgemein verwendbaren Datum/Zeit-Aufdrösel-Batchdatei namens GetAllDateTimeInfos.bat.
Diese nutzt aber wiederum vorhandene VBS-Funktionalitäten, alldieweil im Batch keinerlei Datumsberechnungen unterstützt werden.
Und man/frau schlicht und einfach albern wird, wenn es trotzdem über native Batch abgefackelt werden soll.

Das kann ich mit einem Pur-Batch-Schnipsel belegen:

Wenn ich diesen Schnipsel gegen ein oder mehrere Dateien laufen lasse (um 13:07h!), bekomme ich so etwas am CMD-Prompt:

... das heißt, Für jede angefasste/abgefragte Datei bekommst Du eine Zeile mit dem Dateinamen und dem abprüfbaren String "[GTR]", falls die Datei älter als 30 Minuten ist bzw "LSS", wenn die Datei jünger ist als 30 Minuten.

Du kannst also, wie es hier im Forum schon mehrfach vorgehampelt wurde, mit "Find" und Prüfung des Errorlevels Deine Programmlogik steuern.
Beispiel:

Aber dazu findest Du genug Beispiele hier - ich wollte ja nur den Algorithmus skizzieren.

Gruß
Biber
P.S. Ist -wie geschrieben- albern, dieses Rad neu zu erfinden bzw. native Batch hier als Werkzeug zu verwenden.
Für den Rest meiner monatlichen Admin-Aufgaben brauche ich weniger Zeilen.
Bitte warten ..
Mitglied: cmichel
04.09.2006 um 08:08 Uhr
Hallo Biber,

Ja das wird mir auf jeden fall weiterhelfen!
Vielen Dank!

Gruß
Christof
Bitte warten ..
Mitglied: Biber
04.09.2006 um 09:09 Uhr
Moin cmichel,

dennoch, auch wenn ich mich damit wiederholen sollte, halte ich bastla's Ansatz mit Nutzung der DateDiff()-Funktion von VB/JScript für die "richtige" Lösung und habe es entsprechend bewertet.

Ich empfehle Dir dringend noch einmal die Klärung, ob wirklich auf dieses Standardwerkzeug verzichtet werden muss.
Sicherheitsrisiken werden aus meiner Sicht durch die Vorteile kompensiert.
Und, falls Sicherheitsaspekte der Grund gegen VBS gewesen sein sollten:
Eure Rechner könnte ich auch mit native Batch zu mehr oder weniger dekorativen Briefbeschwerern umfunktionieren.
Und wenn ich das könnte, gibt es sicherlich weitere 2 Millionen DAUs mit ausreichender krimineller Energie und Kreativiät.

Bitte setze den Beitrag auf "Gelöst", wenn für Dich keine wesentlichen Fragen mehr offen sind.

Danke
Biber
Bitte warten ..
Mitglied: cmichel
04.09.2006 um 12:53 Uhr
Hi Biber,

Das script habe ich unter date.bat gespeichert.
Ich habe gerade mal versuch die batch mal aufzurufen mit:
date files.txt
Dann kommt bei mir der Hinweis:
Eingegebenes Datum kann nicht übernommen werden.
Geben Sie das neue Datum ein: (TT-MM-JJ)

Was mache ich da falsch?
Gruß
Christof
Bitte warten ..
Mitglied: Biber
04.09.2006 um 13:12 Uhr
Moin cmichel,

das kollidiert mit dem gleichlautenden internen CMD-Befehl "date", der Vorrang hat.

Abhilfe:
a) recommended: Deine *.bat-Datei umbenennen z.B. in Find30MinFiles.bat oder AlleDateienÄlterAlsEineHalbeStundeSuchen.bat oder Karlheinz.bat...
...jedenfalls nicht date.bat

b) nicht empfohlen:
Datei so lassen, wie sie heißt und explizit mit Pfadangabe aufrufen, z.B c:\bätsche\date.bat

Gruß
Biber
Bitte warten ..
Mitglied: cmichel
04.09.2006 um 13:41 Uhr
Hi Biber,

Jo funktioniert!
Vielen Dank für deine Hilfe!!!

Gruß
Christof
Bitte warten ..
Heiß diskutierte Inhalte
Off Topic
Ein Weg weg von Microsoft. Wie würde man es angehen? Lasst uns doch etwas spinnen
it-fraggleVor 1 TagAllgemeinOff Topic50 Kommentare

Guten Morgen Kollegen, es treibt mich schon seit einigen Jahren um, dass es sinnvoll wäre langsam einen Weg weg von Microsoftprodukten zu finden. Mir ...

Hardware
Versorgungsengpass Chips
NebellichtVor 1 TagAllgemeinHardware14 Kommentare

Allg. frage ich mich ja warum Apple auf ARM frühzeitig gesetzt hat. Die Automobilindustrie gerade Absatzprobleme hat, weil keine Chips mehr geliefert werden können. ...

Server-Hardware
HPE ProLiant MicroServer Gen10 Plus - Wo wird das OS installiert?
mayho33Vor 1 TagFrageServer-Hardware13 Kommentare

Hallo @ All, Ich liebäugle mit einem neuem Server (siehe Überschrift). Mein alter Gen8 ist zwar immer noch am laufen, aber es gibt einiges ...

Windows Server
Server 2019 RDS-CALs für Domänen-Admins? Ernsthaft?
gelöst anteNopeVor 1 TagFrageWindows Server7 Kommentare

Nabend zusammen, ich habe hier heute einen RDS auf Basis eines Server 2019 STD installiert und mit User-CALs lizenziert. Soweit funktioniert auch alles. Nur ...

Festplatten, SSD, Raid
Wie würdet ihr eine Datenrettung machen?
pd.edvVor 17 StundenFrageFestplatten, SSD, Raid11 Kommentare

Hallo, ich arbeite gerade an einem Blog-Artikel zum Thema Datenrettung und würde mich brennend interessieren wie Ihr eine Datenrettung angehen würdet. Sagen wir mal ...

LAN, WAN, Wireless
100m GBit-Richtfunk im Freien - Produktempfehlungen?
mstrd308Vor 1 TagFrageLAN, WAN, Wireless10 Kommentare

Hallo zusammen, ich bin auf der Suche nach Produktempfehlungen um einen Richtfunk von einem Gebäude zu einen weiteren zu realisieren. Die Peripherie soll draußen ...

Exchange Server
Transparente Mail-Archivierung Exch. 2016 m. direktem Outlook-Zugriff
departure69Vor 1 TagFrageExchange Server17 Kommentare

Hallo. - Windows 2016 AD-Domäne, 2 DCs unter W2K16 Std. (1 x physisch, 1 x virtuell unter Hyper-V), Funktionsebene 2016 - Exchange 2016 unter ...

Multimedia
PDF Dokumente KOSTENLOS ausfüllen, wie?
Mrhallo19981Vor 1 TagFrageMultimedia12 Kommentare

Hallo, ich möchte PDF Dokumente kostenlos ausfüllen. Anschließend sollen diese Signiert werden. Signieren tu ich mit einem Zertifikat von Adobe. Deswegen ist es wichtig, ...