Meldung bei neuen Dateien in einem System von Unterordnern
Hallo zusammen,
ich habe eine Ordnerstruktur in der einkommende Aufträge einsortiert werden.
Genauer: Insgesamt gibt es vier Produktgruppen mit jeweils mehreren Jahren, in denen nach Monaten unterteilt die Aufträge sortiert werden.
\Aufträge\Produktgruppe\Eingang2013\012013\Auftrag12345.pdf
Es kommt also in jedem Monat ein Unterordner im aktuellen Jahr in jeder Produktgruppe hinzu. Ich bin nun auf der Suche nach einem Meldesystem, am liebsten in VBS vergleichbar mit diesem:
Meldung bei hinzufügen einer Datei in den Ordner come
Es sollen abweichend vom o.g. Beispiel die gesamte Ordnerstrruktur unterhalb des Ordners Aufträge durchsucht werden und bei einer neuen Datei in einem Unterordner eine MessageBox erscheinen.
Meine Programmierkenntnisse reichen leider nicht mal bis zur Haustür, so dass ich allein nicht zu einer Lösung komme. Beispiele im Netz, die ich gefunden habe, beschränken sich nur auf einen Ordner. Ich bin also für jede Hilfe dankbar.
Gruß vom Colonel
ich habe eine Ordnerstruktur in der einkommende Aufträge einsortiert werden.
Genauer: Insgesamt gibt es vier Produktgruppen mit jeweils mehreren Jahren, in denen nach Monaten unterteilt die Aufträge sortiert werden.
\Aufträge\Produktgruppe\Eingang2013\012013\Auftrag12345.pdf
Es kommt also in jedem Monat ein Unterordner im aktuellen Jahr in jeder Produktgruppe hinzu. Ich bin nun auf der Suche nach einem Meldesystem, am liebsten in VBS vergleichbar mit diesem:
Meldung bei hinzufügen einer Datei in den Ordner come
Es sollen abweichend vom o.g. Beispiel die gesamte Ordnerstrruktur unterhalb des Ordners Aufträge durchsucht werden und bei einer neuen Datei in einem Unterordner eine MessageBox erscheinen.
Meine Programmierkenntnisse reichen leider nicht mal bis zur Haustür, so dass ich allein nicht zu einer Lösung komme. Beispiele im Netz, die ich gefunden habe, beschränken sich nur auf einen Ordner. Ich bin also für jede Hilfe dankbar.
Gruß vom Colonel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 201340
Url: https://administrator.de/forum/meldung-bei-neuen-dateien-in-einem-system-von-unterordnern-201340.html
Ausgedruckt am: 23.04.2025 um 06:04 Uhr
11 Kommentare
Neuester Kommentar
Das ginge, wäre aber recht aufwändig.
Du kannst auf der Ordnerstruktur die NTFS-Überwachung aktivieren. Stell sie so ein, dass auch create/write überwacht werden und schon laufen diese Vorgänge im Eventlog auf, und zwar im Sicherheitsprotokoll. Wenn Du sie dort siehst, kannst Du per Kontextmenü Eventtriggers anheften, so dass beliebige Aktionen ausgeführt werden - zum Beispiel lokale order remote Popups oder Mails.
Wenn jedoch der Inhalt der Popups oder Mails nun noch sagen soll, was genau wo kreiert wurde, dann wird's schwierig, denn Du müsstest dafür aus dem Eventlog exportieren und das auch noch aufbereiten. Es ginge, aber nicht so ganz leicht wie der Rest.
Du kannst auf der Ordnerstruktur die NTFS-Überwachung aktivieren. Stell sie so ein, dass auch create/write überwacht werden und schon laufen diese Vorgänge im Eventlog auf, und zwar im Sicherheitsprotokoll. Wenn Du sie dort siehst, kannst Du per Kontextmenü Eventtriggers anheften, so dass beliebige Aktionen ausgeführt werden - zum Beispiel lokale order remote Popups oder Mails.
Wenn jedoch der Inhalt der Popups oder Mails nun noch sagen soll, was genau wo kreiert wurde, dann wird's schwierig, denn Du müsstest dafür aus dem Eventlog exportieren und das auch noch aufbereiten. Es ginge, aber nicht so ganz leicht wie der Rest.
Dann wäre dies ein Ansatz:
Das Script checkt alle 10 Sekunden nach neu hinzugefügten Dateien und meldet dann per Msgbox. Der Pfad ist in Zeile 10 anzugeben(Hinweis: Du musst WQL Syntax benutzen, d.h. Pfadangaben werden mit doppelbackslash angegeben und die jeweils "gequoted" also für ein Backslash sind "\\\\" nötig). Der Server-Name wird in der ersten Zeile angegeben.
Wenn du es startest passiert erst mal nix, das Script läuft aber im Hintergrund weiter und meldet sich erst wenn etwas im angegebenen Ordner erstellt wird...
Noch als Hinweis, das Polling der Events sollte nicht zu häufig geschehen da es viele Resourcen verbraucht (s. Zeile 7 WITHIN 10).
Grüße Uwe
Das Script checkt alle 10 Sekunden nach neu hinzugefügten Dateien und meldet dann per Msgbox. Der Pfad ist in Zeile 10 anzugeben(Hinweis: Du musst WQL Syntax benutzen, d.h. Pfadangaben werden mit doppelbackslash angegeben und die jeweils "gequoted" also für ein Backslash sind "\\\\" nötig). Der Server-Name wird in der ersten Zeile angegeben.
Wenn du es startest passiert erst mal nix, das Script läuft aber im Hintergrund weiter und meldet sich erst wenn etwas im angegebenen Ordner erstellt wird...
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE " _
& "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _
& "TargetInstance.GroupComponent= " _
& "'Win32_Directory.Name=""d:\\\\Aufträge\\\\Produktgruppe""'")
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
WScript.Echo objLatestEvent.TargetInstance.PartComponent
Loop
Noch als Hinweis, das Polling der Events sollte nicht zu häufig geschehen da es viele Resourcen verbraucht (s. Zeile 7 WITHIN 10).
Grüße Uwe
Hallo DerColonel,
eventuell hilft dir dieses Script ja weiter.
Du musst den Hauptpfad für deine Bedürfnisse anpassen und die Zykluszeit.
Das Script läuft endlos vor sich hin!
Beim Starten des Scriptes werden alle Dateien in allen Ordnern /Unterordnern als Referenz eingelesen. Wenn dann neue Dateien hinzukommen, gibt es eine Meldung und nach der Meldung wird auch diese neue Datei mit in die "Referenzliste" hinzugefügt.
Wenn eine Datei gelöscht wird, hat das keinerlei Einfluss.
Hier der Code:
Gruss
Tsuki
eventuell hilft dir dieses Script ja weiter.
Du musst den Hauptpfad für deine Bedürfnisse anpassen und die Zykluszeit.
Das Script läuft endlos vor sich hin!
Beim Starten des Scriptes werden alle Dateien in allen Ordnern /Unterordnern als Referenz eingelesen. Wenn dann neue Dateien hinzukommen, gibt es eine Meldung und nach der Meldung wird auch diese neue Datei mit in die "Referenzliste" hinzugefügt.
Wenn eine Datei gelöscht wird, hat das keinerlei Einfluss.
Hier der Code:
Dim Pfad
Dim AktuelleDaten, DatenVergleichen
Dim FSO
Dim KeinTreffer
Set FSO = CreateObject("Scripting.FileSystemObject")
Pfad = "C:\Auftraege\"
'Beim Start des Scriptes alle Dateien einlesen
ListOrdnerStart (Pfad)
'Ab hier die Ordner ueberwachen alle 20Sekunden
For i = 0 to 1
DatenVergleichen = Split(AktuelleDaten,vbcrlf)
KeinTreffer = 0
ListOrdnerPruefen (Pfad)
Wscript.Sleep 10000 'alle 10Sekunden
i = 0
Next
Sub ListOrdnerStart(ordner)
Set ordner = FSO.GetFolder(ordner)
For Each file In ordner.files
Pfadangabe =File.Path
AktuelleDaten = AktuelleDaten & Pfadangabe & vbcrlf
Next
For Each Unterordner In Ordner.subfolders
Pfadangabe = unterordner.path
ListOrdnerStart Unterordner
next
End Sub
Sub ListOrdnerPruefen(ordner)
Set ordner = FSO.GetFolder(ordner)
For Each file In ordner.files
Pfadangabe =File.Path
For j = 0 to (Ubound(DatenVergleichen) - 1)
If DatenVergleichen(j) = Pfadangabe Then
KeinTreffer = 1
j = Ubound(DatenVergleichen) - 1
End If
Next
IF KeinTreffer = 0 then
Msgbox Pfadangabe & " ist neu erstellt!"
AktuelleDaten = AktuelleDaten & Pfadangabe & vbcrlf
End If
KeinTreffer = 0
Next
For Each Unterordner In Ordner.subfolders
Pfadangabe = unterordner.path
ListOrdnerPruefen Unterordner
next
End Sub
Set FSO = Nothing
Gruss
Tsuki