Forum: PC-Programmierung Benachrichtigung wenn länger als x Minuten keine neue Datei in Ordner


von CMD (Gast)


Lesenswert?

Hallo,

unter Windows XP/7 möchte ich folgendes realisieren:

Wenn seit > x Minuten keine neue Datei in einem bestimmten Ornder + 
dessen Unterordner angelegt wurde soll eine Benachrichtigung erfolgen. 
Benachrichtigung kann z.b. der einmalige Aufrud eines anderen Programms 
sein.

Wie kann man das möglichst einfach nur mit Windows Hilfsmitteln (.bat 
datei?) realisieren?

Danke
CMD

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Zyklisch (alle x Minuten) die Ausgabe von

dir /a-d /od

(zeigt nur Dateien, sortiert nach Zeit)
auf die letzte Zeile mit einer Änderungszeit hin untersuchen.


Das lässt sich mit ein paar Zeilen VBScript bewerkstelligen; der 
Interpreter dafür ist das mit Windows seit langem mitgelieferte 
cscript.exe

von Zwiebelrostbratenausgasung (Gast)


Lesenswert?

CMD schrieb:
> Wie kann man das möglichst einfach nur mit Windows Hilfsmitteln (.bat
> datei?) realisieren?
.bat wird schwierige bwz. extrem umständlich.
nimm ne beliebige bessere scriptsprache da geht das einfacher oder ein 
fertiges tool.

von Philipp K. (philipp_k59)


Lesenswert?

forfiles?

von Chris D. (chrisdee)


Lesenswert?

Hallo,

so funktioniert das unter Windows7:

1
@echo off
2
echo Ordnerstrukturen vergleichen, nach einer bestimmten Zeitspanne
3
for /L %%N IN (1, 1, 5) DO (
4
  if exist tree1.txt del tree1.txt > nul
5
  if exist tree2.txt del tree2.txt > nul
6
  tree > tree1.txt 
7
  timeout /T 10
8
  tree > tree2.txt
9
  fc /b tree1.txt tree2.txt > nul
10
  if errorlevel 1 C:\Windows\system32\calc.exe
11
)
12
echo Programmende
13
echo.
14
pause

Muss jetzt noch angepasst werden:
-den Durchlauf der Schleife erhöhen (for ... 5mal)
-die Zeitspanne erhöhen (timeout ... 10sec)
-bei unterschiedlichen Ordnerstrukturen entsprechendes Programm starten 
(C:\ ... \calc.exe) oder Textausgabe (if errorlevel 1 echo 
unterschiedliche Dateien)

Dann z.B. als "Ordnervergleich.bat" im entsprechenden Ordner abspeichern 
und ausführen.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Ich habe das mal vor einigen Jahren gemacht, weiss z.Zt. keine Details 
mehr, aber: Windows ab NT kann einen Event auslösen, wenn sich in einem 
Ordner etwas ändert. Muss man nur eine eigene Funktion einklinken ...

https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.changed%28v=vs.110%29.aspx

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Frank E. schrieb:
> Muss man nur eine eigene Funktion einklinken ...

Das wird man in einer Batchdatei besonders gut können.


Was Du da verlinkt hast, ist im übrigen das .Net-Geraffel, mit dem 
naturgemäß nur dessen Nutzer etwas anfangen können.

Die dem zugrundeliegenden Win32-API-Funktionen 
FindFirstChangeNotification und FindNextChangeNotification werden hier 
beschrieben:

https://msdn.microsoft.com/de-de/library/windows/desktop/aa365261%28v=vs.85%29.aspx

Das Ergebnis dieser Funktionen ist ein Handle, auf das mit 
WaitForSingleObject/WaitForMultipleObjects gewartet werden kann.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.