Top-Themen

Aktuelle Themen (A bis Z)

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 Ordner-Überwachung per Skript

Mitglied: goodbytes

goodbytes (Level 2) - Jetzt verbinden

09.05.2008, aktualisiert 18.10.2012, 12820 Aufrufe, 11 Kommentare

Hallo,
hat jemand zufällig eine schnelle Lösung per vbs oder Batch parat, mit der ich überwachen kann, dass bestimmte Dateitypen nicht länger als eine maximale Zeit (z.B. 15 Minuten) in einem Ordner liegen bleiben. (Ist der temporäre Ordner eines POP3-Connectors, in dem die *.msg-Dateien kurz landen. Wenn sie länger darin liegen bleiben stimmt etwas nicht. Hier geht`s aber um Fristen.)

Torsten


[Edit Biber] 14.5.2008
Der Beitrag ist mittlerweile "fertig" und als gelöst markiert.
So, wie er sich entwickelt hat, verschiebe ich ihn mal von "Betriebssysteme" mach "Batch & Shell" zu den anderen Skripting-Lösungen und ändere den Titel in "Ordner-Überwachung per Skript".
[/Edit]
Mitglied: Superschaf
09.05.2008 um 08:09 Uhr
Es gibt seit Server 2003 R2 eine Dateiserver-Funktion, da kannst du Dateitypen verbieten.
Bitte warten ..
Mitglied: Iwan
09.05.2008 um 08:44 Uhr
lese Beitrag -> denke drüber nach -> if FrageVerstanden = True then Antworten Else: Close

Torsten möchte nicht wissen, wie man Dateitypen verbietet, sondern wie man einen Ordner überwacht

@Torsten
welcher Pop3-Connector ist es denn? hat der vielleicht noch zusätzliuche Funktionen, die man zur Überwachung nutzen könnte?
Bitte warten ..
Mitglied: goodbytes
09.05.2008 um 10:18 Uhr
Hallo,
richtig, um das Verbieten bestimmter Dateitypen ging`s nun wirklich nicht.
Ich nutze "POPcon" (www.popcon.de). Leider habe ich da keine Möglichkeiten zu sowas.
Hab auch noch mal in meinem Batch/Script-Ordner gekramt und bin tatsächlich auf was gestossen.
In diesem Fall hatte ich alle 15min (mittels Taskplaner) einen Ordner überwacht, ob neue Dateien

Anfang !!!

' Ordnerüberwachung:

' Art der verwendeten Logbucheinträge, 0 = Success, 1 = Error, 2 = Warning, 4 = Information
NEWEVENT = 1
DELEVENT = 2

' Verzeichnis, in dem die Dateien protokolliert werden sollen
LOGDIR = "C:\Programme\POPcon\"
' Dateien, die gesucht werden sollen
FILEMASK = "*.msg"

' Art der verwendeten Logbucheinträge, 0 = Success, 1 = Error, 2 = Warning, 4 = Information
NEWEVENT = 1
DELEVENT = 2

' Diese temporäre Datei wird für den Vergleich benötigt. Das Script muss im verwendeten Verzeichnis Schreibrechte haben.
DIRFILE = "C:\Programme\POPcon\Log.txt"

' NewDel = 1: Alle Unterschiede protokollieren
' NewDel = 0: Nur neu hinzugekommene Dateien protokollieren
NewDel = 1

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")

'Alte Liste aus DIRFILE in Array Zeile0() einlesen
If objFSO.FileExists(DIRFILE) Then 'DIRFILE vorhanden
Set objDirFile = objFSO.OpenTextFile(DIRFILE, 1)
If Not objDirFile.AtEndOfStream Then 'DIRFILE nicht leer
strZeile0 = objDirFile.ReadAll
Zeile0 = Split(strZeile0, vbCrLF)
Else
Zeile0 = Array("")
End If 'DIRFILE nicht leer
Else
Zeile0 = Array("")
End If 'DIRFILE vorhanden

' Alle Err-Dateien aus dem Ordner sortiert in das Array Zeile1() einlesen
strCMD = objShell.ExpandEnvironmentStrings("%ComSpec%") & " /c dir " & LOGDIR & "\" & FILEMASK & " /b /od /a-d 2>nul"
strZeile1 = objShell.Exec(strCMD).StdOut.ReadAll
Zeile1 = Split(strZeile1, vbCrLF)

' Am Ende der Ausführung aktuelle Dateiliste in DIRFILE speichern
objFSO.OpenTextFile(DIRFILE, 2, True).Write strZeile1

' *
' Dateivergleich zwischen Content.txt (Zeile0) und aktueller Liste (Zeile1)
' *

If LCase(Trim(strZeile0)) <> LCase(Trim(strZeile1)) Then 'Dateiliste hat sich verändert

' Hinzugekommene Dateien in "Hinzu1" schreiben
Hinzu1 = ""
For i = 0 To UBound(Zeile1)
Hinzu = Filter(Zeile0, Zeile1(i), True)
If UBound(Hinzu) = -1 Then Hinzu1 = Hinzu1 & vbCrLF & Zeile1(i)
Next

If Hinzu1 <> "" Then 'Es sind Dateien hinzugekommen
' Event für hinzugekommene Dateien in das Logbuch schreiben
EventStr = "Neu hinzugekommene Dateien vom Typ " & FILEMASK & " :"
EventStr = EventStr & Hinzu1
' objShell.LogEvent NEWEVENT, EventStr
'WScript.Echo("EventHinzu: " & EventStr & vbCrLF) 'zu Demozwecken Ausgabe anstatt Event-Eintrag
Set WSHShell = WScript.CreateObject("WScript.Shell") 'Batch-Datei an Eingabeaufforderung übergeben
WSHShell.Run("cmd.exe /c Batch.cmd"), 0, True
End If 'Es sind Dateien hinzugekommen

Else
'WScript.Echo "Keine Unterschiede gefunden!" 'Ausgabe zu Demozwecken
End If

Ende !!!

Nun müsste ich es noch so umstricken, dass bei einer Übereinstimmung mindestens eines Dateinamens das Ereignis ausgelöst wird.
Naja, mal sehen.

Torsten
Bitte warten ..
Mitglied: bastla
09.05.2008 um 15:20 Uhr
Hallo TorstenB!

Versuch es damit:
01.
' Ordnerüberwachung: 
02.
 
03.
' Verzeichnis, in dem die Dateien protokolliert werden sollen 
04.
LOGDIR = "C:\Programme\POPcon\" 
05.
' Dateien, die gesucht werden sollen 
06.
FILEMASK = "*.msg" 
07.
' Diese temporäre Datei wird für den Vergleich benötigt. Das Script muss im verwendeten Verzeichnis Schreibrechte haben. 
08.
DIRFILE = "C:\Programme\POPcon\Log.txt" 
09.
'Diesen Batch ausführen, wenn mindesten eine alte Datei gefunden wird 
10.
BATCH = "C:\Batch.cmd" 
11.
 
12.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
13.
Set objShell = CreateObject("WScript.Shell") 
14.
 
15.
'Alte Liste aus DIRFILE in Array Zeile0() einlesen 
16.
If objFSO.FileExists(DIRFILE) Then 'DIRFILE vorhanden 
17.
	Set objDirFile = objFSO.OpenTextFile(DIRFILE, 1) 
18.
	If Not objDirFile.AtEndOfStream Then 'DIRFILE nicht leer 
19.
		strZeile0 = objDirFile.ReadAll 
20.
	Else 
21.
		strZeile0 = "" 
22.
	End If 'DIRFILE nicht leer 
23.
Else 
24.
	strZeile0 = "" 
25.
End If 'DIRFILE vorhanden 
26.
 
27.
' Alle Dateien aus dem Ordner sortiert in das Array Zeile1() einlesen 
28.
strCMD = objShell.ExpandEnvironmentStrings("%ComSpec%") & " /c dir " & LOGDIR & "\" & FILEMASK & " /b /od /a-d 2>nul" 
29.
strZeile1 = objShell.Exec(strCMD).StdOut.ReadAll 
30.
Zeile1 = Split(strZeile1, vbCrLF) 
31.
 
32.
' Am Ende der Ausführung aktuelle Dateiliste in DIRFILE speichern 
33.
objFSO.OpenTextFile(DIRFILE, 2, True).Write strZeile1 
34.
 
35.
' * 
36.
' Dateivergleich zwischen Content.txt (Zeile0) und aktueller Liste (Zeile1) 
37.
' * 
38.
 
39.
If LCase(Trim(strZeile0)) <> LCase(Trim(strZeile1)) Then 'Dateiliste hat sich verändert 
40.
	strZeile0 = vbCrLF & strZeile0 'jeder Eintrag ist jetzt von vbCrLF umgeben und kann entsprechend gesucht werden 
41.
	For i = 0 To UBound(Zeile1) 
42.
		If InStr(1, strZeile0, vbCrLF & Zeile1(i) & vbCrLF, vbTextCompare) Then 
43.
			'noch vorhanden 
44.
			'Batch-Datei an Eingabeaufforderung übergeben 
45.
			objShell.Run "cmd.exe /c " & BATCH , 0, True 
46.
			'weitere Überprüfung nicht erforderlich 
47.
			Exit For 
48.
		End If 
49.
	Next 
50.
Else 'Dateiliste unverändert 
51.
	'Batch-Datei an Eingabeaufforderung übergeben 
52.
	objShell.Run "cmd.exe /c " & BATCH , 0, True 
53.
End If
Den Pfad für die auszuführende Batchdatei habe ich aus Gründen der Übersichtlichkeit ebenfalls (am Anfang des Scripts) einer Variablen zugewiesen.

Grüße
bastla

P.S.: Wenn Du das nächste Mal ein Script postest, bitte anstelle von "Anfang !!!" und "Ende !!!" < code> und < /code> (natürlich ohne Leerzeichen) verwenden ...
Bitte warten ..
Mitglied: goodbytes
13.05.2008 um 09:53 Uhr
Hallo bastla,
ich hab`s mal ausprobiert. Der Ordnerinhalt wird auch sauber in die Logdatei geschrieben. Allerdings schlägt offenbar der Vergleich fehl.
Die Testdatei habe ich drin liegen gelassen. Beim zweiten Aufruf des Scripts hätte der Vergleich eigentlich positiv ausfallen müssen und die Batch ausgeführt werden müssen.
Ging aber nicht. Woran könnte das noch liegen?

Torsten
Bitte warten ..
Mitglied: bastla
13.05.2008 um 10:25 Uhr
Hallo TorstenB!

Füge testweise die Zeilen
01.
WScript.Echo "Alt (" & Len(Trim(strZeile0)) & "): " & vbCrLF & strZeile0 
02.
WScript.Echo "Neu (" & Len(Trim(strZeile1)) & "): " & vbCrLF & strZeile1
vor "If LCase ..." ein und starte das Script von der Kommandozeile mit
01.
cscript //nologo "PfadZuDeinemScript"
Die Zahl nach "Alt" bzw "Neu" gibt die Zeichenanzahl der beiden Inhaltsverzeichnisse an und sollte bei zweimaligem Durchlauf den selben Wert haben; ebenso müssten die angezeigten Dateilisten übereinstimmen.

Zusätzlich kannst Du noch den Batchstart mit folgender Zeile (jeweils unmittelbar vor "objShell.Run..." platzieren) dokumentieren:
01.
WScript.Echo "Starte """ & BATCH & """"
Grüße
bastla
Bitte warten ..
Mitglied: goodbytes
13.05.2008 um 12:48 Uhr
Hallo bastla,
mmm, nun es wurde sauber angezeigt und hat auch funktioniert.
Ich habe ja mittlerweile hin- und herprobiert; offenbar hatte ich irgendwo einen Tippfehler drin.
So ist es also auf jeden Fall lauffähig.
Eine Frage hab ich da noch. Im Normalfall sollte sich ja immer keine msg-Datei darin befinden, nur ganz kurz mal. In den meisten Fällen wird in der Logdatei immer nichts stehen. Wie kann ich nun noch abfangen, dass die Batch gestartet wird wenn bei zwei Aufrufen beides Mal die Logdatei leer ist? In diesem Fall startet momentan ja auch die Batch, da der Inhalt der Logdatei identisch ist.

Torsten
Bitte warten ..
Mitglied: bastla
13.05.2008 um 13:25 Uhr
Hallo TorstenB!

Einfach in den letzten Teil noch eine Abfrage rein:
01.
Else 'Dateiliste unverändert 
02.
	'Batch-Datei an Eingabeaufforderung übergeben 
03.
	If Trim(strZeile1) <> "" Then objShell.Run "cmd.exe /c " & BATCH , 0, True 
04.
End If
Alternativ dazu könntest Du auch schon vor dem If LCase ... mit
01.
If Trim(strZeile1) = "" Then WScript.Quit
bei aktuell leerem Ordner gleich das Script beenden.

Grüß
bastla
Bitte warten ..
Mitglied: goodbytes
13.05.2008 um 14:34 Uhr
Hallo bastla,
klappt prima; ich hab mich für die zweite Variante entschieden, da das Script ja nicht unnötig weiter ablaufen muss wenn der Ordner ohnehin leer ist.

Vielen Dank für die schnelle Hilfe !!!

Torsten
Bitte warten ..
Mitglied: bastla
13.05.2008, aktualisiert 18.10.2012
Hallo TorstenB!

Vielleicht könntest Du dann noch Deinen hier geposteten Parallelbeitrag in einen Hinweis auf diesen Thread verwandeln ...

Grüße
bastla
Bitte warten ..
Mitglied: goodbytes
14.05.2008 um 07:19 Uhr
Alles klar, hab ich gemacht.

Torsten
Bitte warten ..
Ähnliche Inhalte
Microsoft
Überwachung von Ordnern
gelöst Frage von 119785Microsoft6 Kommentare

Hallo, mal eine grundlegende Frage. Kann ich die Überwachung von Ordner deaktivieren? Sprich: Ordner Musik > Eigenschaften > Sicherheit ...

Batch & Shell
Ordner überwachung per Powershell
Frage von pixel0815Batch & Shell3 Kommentare

Moin moin, hat jemand mal sowas gemacht? Ich suche ein Skript zur Überwachung eines Ordners. Ich benötige die üblichen ...

Windows Server

Datei-Ordner Überwachung für bestimmte Dateitypen

gelöst Frage von hushpuppiesWindows Server4 Kommentare

Hallo zusammen, ich bin auf der Suche nach einem möglichst einfachen Programm mit dem ich bestimmte Ordner auf einem ...

Batch & Shell

Skript soll Dateien in "Monats" Ordner kopieren

gelöst Frage von agnostikerBatch & Shell11 Kommentare

Ziel: Alle Dateien die innerhalb des letzten Monats erstellt wurden in einen Ordner kopieren der den Namen des aktuellen ...

Neue Wissensbeiträge
Router & Routing

Olle Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 5 StundenRouter & Routing1 Kommentar

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 18 StundenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 1 TagWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Microsoft Office

MS Office 2019 ohne OneNote - OneNote App speichert nur in Cloud

Information von Deepsys vor 1 TagMicrosoft Office5 Kommentare

Microsoft zeigt deutlich wohin alles bei Ihnen geht, OneNote 2019 wird es nicht mehr geben, und die Windows 10 ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
Server SSD: NVMe PCIe 3.0 RAID?
Frage von bouneeFestplatten, SSD, Raid15 Kommentare

Hallo liebe Admins, mir stellt sich gerade die Frage, ob ein neuer Server mit SSD NVMe PCIe 3.0 Sinn ...

Sonstige Systeme
Wie Normenkataloge im Unternehmen bereit stellen?
Frage von MuzzepuckelSonstige Systeme14 Kommentare

Hallo Kollegen, ich lese schon lange hier mit, nun mein ersrer Beitrag, bzw. Frage. :-) Wir benötigen für unsere ...

Windows 10
Windows 10 Startmenü-Einstellungen Systemweit festlegen
Frage von flotautWindows 1013 Kommentare

Guten Morgen liebe Admins, wir möchten bei uns am Lehrstuhl demnächst auf Windows 10 umsteigen. Wir installieren unsere PC's ...

LAN, WAN, Wireless
OpenVPN Client Fehlermeldungen
Frage von chris84LAN, WAN, Wireless12 Kommentare

Hallo Zusammen, wir nutzen seit kurzem einen neuen Router und den OpenVPN Client. Die VPN Verbindung klappt; allerdings kommen ...