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

Meldung bei neuen Dateien in einem System von Unterordnern

Frage Entwicklung Basic

Mitglied: DerColonel

DerColonel (Level 1) - Jetzt verbinden

06.02.2013 um 12:31 Uhr, 2667 Aufrufe, 11 Kommentare

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:
http://www.administrator.de/frage/meldung-bei-hinzuf%c3%bcgen-einer-dat ...

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
Mitglied: DerWoWusste
06.02.2013 um 13:44 Uhr
Moin.

Es ist natürlich die Frage, was Du bezweckst, was also die Messagebox anzeigen soll. Wenn es nur darum geht zu sagen "Hallo, in der Ordnerstruktur wurde irgendwo eine neue Datei erstellt", dann hätte ich eine Lösung.
Bitte warten ..
Mitglied: DerColonel
06.02.2013 um 13:47 Uhr
Das wäre schon eine starke Verbesserung der Situation. Wenn nun in der Messagebox noch stehen würde in welcher Produktgruppe sich was getan hat wäre es natürlich noch besser
Bitte warten ..
Mitglied: DerWoWusste
06.02.2013 um 14:02 Uhr
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.
Bitte warten ..
Mitglied: DerColonel
06.02.2013 um 14:36 Uhr
Diese Lösung fällt flach, da es ein Firmennetzwerk ist und ich solche Einstellungen nicht vornehmen kann. Eine Lösung mit VB wäre mir ganz recht, da ich das ohne Probleme umsetzten kann.
Bitte warten ..
Mitglied: DerWoWusste
06.02.2013 um 14:40 Uhr
Ok, dann sag mal kurz für mich und andere, wie weit Du denn den Rechner mit der Freigabe beeinflussen kannst, wenn Du dort nicht Admin bist.
Bitte warten ..
Mitglied: colinardo
06.02.2013, aktualisiert um 15:29 Uhr
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...

01.
strComputer = "." 
02.
Set objWMIService = GetObject("winmgmts:" _ 
03.
    & "{impersonationLevel=impersonate}!\\" & _ 
04.
        strComputer & "\root\cimv2") 
05.
 
06.
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _ 
07.
    ("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE " _ 
08.
        & "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _ 
09.
            & "TargetInstance.GroupComponent= " _ 
10.
                & "'Win32_Directory.Name=""d:\\\\Aufträge\\\\Produktgruppe""'") 
11.
 
12.
Do 
13.
    Set objLatestEvent = colMonitoredEvents.NextEvent 
14.
    WScript.Echo objLatestEvent.TargetInstance.PartComponent 
15.
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
Bitte warten ..
Mitglied: DerColonel
06.02.2013 um 17:31 Uhr
Danke Uwe für den Vorschlag. Diese Lösung ist in etwa die, die im Link genannt ist. Sie gibt Meldung, wenn in einem ganz bestimmten Ordner etwas passiert, hier im Ordner Produktgruppe.

Leider werden Unterordner im Ordner Produktgruppe nicht berücksichtigt. Ich möchte nicht die Pfadangaben in jedem Monat in vier Programmen ändern müssen, daher mein Wunsch die Funktion auf beliebeige Unterordner zu erweitern.

Sowas funktioniert leider nicht:
& "'Win32_Directory.Name=""d:\\\\Aufträge\\\\Produktgruppe\\\\*""'")
Bitte warten ..
Mitglied: DerWoWusste
06.02.2013 um 22:02 Uhr
Noch eine Antwort auf meine Frage parat?
Bitte warten ..
Mitglied: TsukiSan
07.02.2013 um 07:46 Uhr
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:
01.
Dim Pfad 
02.
Dim AktuelleDaten, DatenVergleichen 
03.
Dim FSO 
04.
Dim KeinTreffer 
05.
 
06.
Set FSO = CreateObject("Scripting.FileSystemObject") 
07.
Pfad = "C:\Auftraege\" 
08.
 
09.
'Beim Start des Scriptes alle Dateien einlesen 
10.
ListOrdnerStart (Pfad) 
11.
 
12.
'Ab hier die Ordner ueberwachen alle 20Sekunden 
13.
For i = 0 to 1 
14.
	DatenVergleichen = Split(AktuelleDaten,vbcrlf) 
15.
	KeinTreffer = 0 
16.
	ListOrdnerPruefen (Pfad) 
17.
	Wscript.Sleep 10000 'alle 10Sekunden 
18.
	i = 0 
19.
Next 
20.
 
21.
 
22.
Sub ListOrdnerStart(ordner) 
23.
 
24.
	Set ordner = FSO.GetFolder(ordner) 
25.
 
26.
	For Each file In ordner.files 
27.
		Pfadangabe =File.Path 
28.
		AktuelleDaten = AktuelleDaten & Pfadangabe & vbcrlf 
29.
	Next 
30.
 
31.
	For Each Unterordner In Ordner.subfolders 
32.
		Pfadangabe = unterordner.path 
33.
		ListOrdnerStart Unterordner 
34.
	next 
35.
End Sub 
36.
 
37.
Sub ListOrdnerPruefen(ordner) 
38.
 
39.
	Set ordner = FSO.GetFolder(ordner) 
40.
 
41.
	For Each file In ordner.files 
42.
		Pfadangabe =File.Path 
43.
		For j = 0 to (Ubound(DatenVergleichen) - 1) 
44.
			If DatenVergleichen(j) = Pfadangabe Then  
45.
				KeinTreffer = 1 
46.
				j = Ubound(DatenVergleichen) - 1 
47.
			End If 
48.
		Next 
49.
		IF  KeinTreffer = 0 then 
50.
			Msgbox Pfadangabe & " ist neu erstellt!" 
51.
			AktuelleDaten = AktuelleDaten & Pfadangabe & vbcrlf 
52.
		End If 
53.
		KeinTreffer = 0 
54.
	Next 
55.
 
56.
	For Each Unterordner In Ordner.subfolders 
57.
		Pfadangabe = unterordner.path 
58.
		ListOrdnerPruefen Unterordner 
59.
	next 
60.
 
61.
End Sub 
62.
 
63.
Set FSO = Nothing
Gruss
Tsuki
Bitte warten ..
Mitglied: DerColonel
07.02.2013 um 08:13 Uhr
Hallo Tsuki,
alles was ich bis jetzt mit Deinem Script probiert habe funktioniert genaus so wie ich es mir vorgestellt habe und durch Deine Kommentierung am Anfang kann ich das auch alles gut nachvollziehen.

Vielen herzlichen Dank.
Bitte warten ..
Mitglied: TsukiSan
07.02.2013 um 08:37 Uhr
Hallo DerColonel,

dann freue ich mich, wenn's funktioniert!

Viel Spass damit und eventuell ist das ja ein Anfang, sich mit VBS auseinanderzusetzen.

Viele Grüsse

Tsuki
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
gelöst Dateien aus unterordnern in Hauptverzeichniss zusammenführen (2)

Frage von sedada zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Datei zum verschieben von Dateien aus Unterordnern ? (10)

Frage von Ghostrider1911 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (14)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...