WinFuture-Forum.de: Batchbefehl Zeitabfrage - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Batchbefehl Zeitabfrage


#1 Mitglied ist offline   CRO 

geschrieben 17. September 2020 - 11:21

Hallo Zusammen,

ich habe eine Frage in die Runde:

Ich suche eine Möglichkeit per Batchbefehl eine Abfrage zu machen, wenn eine Datei älter ist als z. B. 90 Tage soll Routine-A ausgeführt werden, wenn dies jedoch nicht der Fall ist, soll Routine-B ausgeführt werden.

Ich bedanke mich schon jetzt für eure Tipps!!!

Gruß CRO (MSP GmbH)
0

Anzeige



#2 Mitglied ist offline   crashed 

  • Gruppe: aktive Mitglieder
  • Beiträge: 162
  • Beigetreten: 24. November 19
  • Reputation: 46
  • Geschlecht:Männlich

geschrieben 17. September 2020 - 12:46

Hallo.

Wäre vielleicht "Forfiles /D" eine Option?

Gruß,
crashed
0

#3 Mitglied ist offline   CRO 

geschrieben 17. September 2020 - 20:35

Hallo Crashed,

nein leider nicht. Es soll mittels Batchbefehl gemacht werden.

Gruß,
CRO
0

#4 Mitglied ist offline   Stef4n 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.216
  • Beigetreten: 20. August 18
  • Reputation: 251
  • Geschlecht:Männlich
  • Wohnort:RLP ~Mainz
  • Interessen:pc

geschrieben 17. September 2020 - 21:25

Komm wir nehmen dir mal die Mühe der Internet Recherche des Befehls ab:

https://duesiblog.de...t-Forfiles.html

Ich glaube schon, dass das ist was du suchst. :)
... aber bitte vorher ein Backup machen! ;-)
0

#5 Mitglied ist offline   CRO 

geschrieben 18. September 2020 - 10:45

Hallo Stef4n,

wie ich crashed schon geschrieben habe, soll es nicht mit Forfiles (Robocopy) gemacht werden.

Gruß,
CRO
0

#6 Mitglied ist offline   crashed 

  • Gruppe: aktive Mitglieder
  • Beiträge: 162
  • Beigetreten: 24. November 19
  • Reputation: 46
  • Geschlecht:Männlich

geschrieben 18. September 2020 - 12:44

Hallo CRO,

was genau ist denn das Problem an "FORFILES /D"?

und was genau wäre das Problem mit "ROBOCOPY"?

Gruß,
crashed
0

#7 Mitglied ist offline   CRO 

geschrieben 18. September 2020 - 13:01

Vielen Dank für die schnellen Antworten. Ich möchte jedoch NICHT löschen! Den Beitrag von Stef4n kenne ich schon (danke aber trotzdem).

Ausschnitt / REM Zeilen aus bereits vorhandenem Code:

REM Das Quartal wurde ermittelt.
REM Nun geht es um weitere Voraussetzungen - hier wird entscheiden, ob eine VollSicherung oder eine DifferenzielleSicherung durchgefuehrt werden muss.
REM Ist der ZielOrdner leer? Wenn ja -> goto VollSicherung
REM Ist der ZielOrdner NICHT leer UND sind die Dateien JUENGER als 100 Tage? Wenn ja -> goto DifferenzielleSicherung
REM Ist der ZielOrdner NICHT leer UND sind die Dateien AELTER als 100 Tage? Wenn ja -> goto VollSicherung

Schön wäre es auch, wenn die in EINER CMD-Datei realisiert werden kann.


Ich wünsche schon Mal ein schönes WE!
0

#8 Mitglied ist offline   DK2000 

  • Gruppe: Administration
  • Beiträge: 19.795
  • Beigetreten: 19. August 04
  • Reputation: 1.434
  • Geschlecht:Männlich
  • Wohnort:Oben auf dem Berg
  • Interessen:Essen, PC, Filme, TV Serien...

geschrieben 18. September 2020 - 13:35

Verstehe jetzt auch noch nicht was gegen FORFILES spricht. Das lässt sich auch in einer Batch verwenden.

Ansonsten wird es sehr kompliziert, zumal hier mit Daten gerechnet wird. Alleine schon Datum_Heute-100Tage=Datum_Vergangenheit ist schon kompliziert genug. Und dann müsste man eine weiter Funktion erstellen, welche das Datum der Dateien mit Datum_Vergangenheit vergleicht und ermittelt, ob alle Daten jünger oder älter als 100 Tage sind oder nicht. Für letzeres könnte man FORFILES verwenden (forfiles /d -Datum_Vergangenheit) und ausbauen. Aber um das Umrechnen von Datum_Heute-100Tage=Datum_Vergangenheit kommt man nicht drum herum.

---

Forefiles unterstützt auch forfiles /d-100. Damit kann man sich natürlich das umrechnen des Datums sparen. Das würde sich doch ausbauen lasse. Bin bloß gerade nach der Dialyse zu kaputt, um klar denken zu können.
Ich bin kein Toilettenpapier-Hamster.
---
Ich bin ein kleiner, schnickeldischnuckeliger Tiger aus dem Schwarzwald.
Alle haben mich ganz dolle lila lieb.
0

#9 Mitglied ist offline   Stef4n 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.216
  • Beigetreten: 20. August 18
  • Reputation: 251
  • Geschlecht:Männlich
  • Wohnort:RLP ~Mainz
  • Interessen:pc

geschrieben 18. September 2020 - 19:40

Ich fasse es hier mal zusammen:

CRO möchte eine Lösung, die in einer Batch Datei genutzt werden kann.
Crashed schlägt ihm eine Lösung vor, die in einer Batch Datei genutzt werden kann.
Cro sagt, dass er eine Lösung möchte, die in einer Batch Datei genutzt werden kann.
Stef4n postet einen Link, wie die Lösung von crashed in einer Batch Datei genutzt wird.
Cro widerspricht, da die ihm vorgeschlagene Lösung nicht so arbeitet wie er es gerne hätte.

Also manchmal macht das Internet echt keinen Spass mehr... :-)
... aber bitte vorher ein Backup machen! ;-)
0

#10 Mitglied ist offline   crashed 

  • Gruppe: aktive Mitglieder
  • Beiträge: 162
  • Beigetreten: 24. November 19
  • Reputation: 46
  • Geschlecht:Männlich

geschrieben 19. September 2020 - 12:50

Hallo CRO.

Meine Frage, was genau das Problem an "FORFILES /D" wäre, hast du mit der Struktur des bereits vorhandenen Codes der Batch-Datei beantwortet, somit nehme ich an, du hast lediglich Schwierigigkeiten damit, den Befehl zu integrieren?!

Vielleicht bringt dich das hier etwas weiter:
@echo off & setlocal

SET "SIKFILE=SICHERUNG.SIK"
::------------------------------------------------------------------------------

REM erstelle Datei mit aktuellem Datum
CALL :CREATEFILE %SIKFILE%
::------------------------------------------------------------------------------

REM erstelle Sicherung, abhaengig vom Alter der vorhandenen Sicherung
echo Alter = 0 Tage
CALL :AGESIK %SIKFILE% 0
echo.

echo Alter = 1 Tag
CALL :AGESIK %SIKFILE% 1

:CLEANUP
DEL %SIKFILE%

timeout /T 5
exit /b
::------------------------------------------------------------------------------

:CREATEFILE
if exist %1 copy /b %1 %~n1.001 >nul
echo.>%1
exit /b %ERRORLEVEL%
::------------------------------------------------------------------------------

:AGESIK
if not exist %1 echo File not found: "%1"! & timeout /T 10 & exit /b -1
FORFILES /P .\ /M %1 /D -%2 /C "cmd /c echo Datei: @fname @fdate" >nul 2>&1
CALL :SIK %ERRORLEVEL%
exit /b %ERRORLEVEL%
::------------------------------------------------------------------------------

:SIK
if %1/==0/ GOTO :DIFF
if %1/==1/ GOTO :VOLL
exit /b %1
::------------------------------------------------------------------------------

:DIFF
echo DIFF
exit /b %ERRORLEVEL%
::------------------------------------------------------------------------------

:VOLL
echo VOLL
exit /b %ERRORLEVEL%
::------------------------------------------------------------------------------





Um mal zu definieren, was ein "Batch-Befehl" ist: So ziemlich jede ausführbare Datei (*.exe *.com) ist als Batch-Befehl verwendbar, solange die CPU-Architektur dazu passt, sowie alle internen Befehle.

Unterschieden werden lediglich interne und externe Befehle.

  • Was ist ein interner Befehl?
Alles, was von CMD-PUNKT-EXE interpretiert werden kann (if, echo, set, dir usw.).

  • Was ist ein externer Befehl?
Alles, was im Pfad steht (%PATH%) und eine ausführbare Extension hat (also auch *.exe *.com *.bat *.cmd usw.)

Was ist der Unterschied zwischen einer Batch-Datei und einer CMD-Datei? Antwort: Der Name ( .bat / .cmd).

@Stef4n:
Nicht die Hoffnung verlieren!
Auch ich musste an der einen oder anderen Stelle etwas schmunzeln, aber ich dachte mir, vielleicht ist es ja ein unerfahrener Praktikant oder "Doodle" hätte einen neuen Nick - allerdings kann "Doodle" ja nichtmal zwischen voll- und integrellem Backup unterscheiden, somit verwarf ich das dann wieder ;D

Gruß,
crashed
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0