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, Batchdatei aufrufen bei neuer Datei

Mitglied: kingspride

kingspride (Level 1) - Jetzt verbinden

14.07.2014, aktualisiert 16.07.2014, 4535 Aufrufe, 16 Kommentare, 1 Danke

Hallo,

bin jetzt schon seit gut 3 stunden im netz auf recherche, und komm nicht so recht voran.

eigentlich ist mein ziel recht simpel.
ich habe eine videowall, auf der im loop videos vom vlc angezeigt werden. das funktioniert auch soweit gut, mit systemstart.
der besitzer der videowall möchte allerdings gern von außen neue videos nachreichen können, damit diese dann in den loop integriert werden.

dazu habe ich mir die playlist m3u ausgesucht, da man diese recht einfach auch manuell schreiben kann.
geschrieben habe ich bereits 2 batchdateien, die die playlist datei anpassen, bzw erstellen sofern sie noch nicht vorhanden ist.

damit diese batch dateien funktionieren, müssen sie den dateinamen eines videofiles übergeben bekommen, in diesem fall als argument.

nun möchte ich den ordner überwachen, und immer wenn eine neue datei dort hinzukommt oder eine datei gelöscht wird, die passende batch datei mit dem passenden dateinamen aufrufen und füttern.

tja, und genau da komme ich nicht weiter.
kann mir jemand weiterhelfen?

mein bisheriger code:

create-plist.bat:

01.
 
02.
@echo off 
03.
 
04.
if exist plist.m3u (goto anhang) 
05.
echo #EXTM3U > plist.m3u 
06.
echo Neue Playlist erstellt 
07.
 
08.
timeout -t 3 -nobreak > nul 
09.
 
10.
:anhang 
11.
echo #EXTINF:1,%1>> plist.m3u 
12.
echo W:\hardcoded-ordnerpfad\,%1>> plist.m3u 
13.
echo Video wurde der Playlist angehaengt 
14.
 
15.
timeout -t 3 -nobreak > nul 
16.
 
17.
exit 
18.
 
delete-plist.bat:

01.
 
02.
@echo off 
03.
 
04.
"W:\hardcoded-ordnerpfad\plist.m3u" findstr -v %1 "W:\hardcoded-ordnerpfad\plist.m3u" 
05.
 
06.
echo Eintrag aus Playlist geloescht, Playlist neu erstellt 
07.
timeout -t 3 -nobreak > nul 
08.
 
09.
exit 
10.
 
(die timeouts sind nur kosmetik, damit man ne chance hat zu lesen, was das batch so von sich gibt )

Vielen Dank schon mal!
Mitglied: rubberman
14.07.2014 um 21:59 Uhr
Hallo kingspride.

Die WMI ist ein geeignetes Mittel. Wäre ein VBScript für dich in Ordnung?

Grüße
rubberman
Bitte warten ..
Mitglied: kingspride
14.07.2014 um 22:09 Uhr
hey, vbs ginge auch, kenn mich damit halt nicht aus. wäre super, wenn du dazu dann noch ein zwei worte schreiben könntest, damit ich verstehe was du mir vorschlägst

danke auf jedenfall schon für die schnelle antwort!
Bitte warten ..
Mitglied: Gersen
14.07.2014 um 22:27 Uhr
Hallo,

falls Du Dich in der .NET-Welt auskennst:

http://msdn.microsoft.com/de-de/library/system.io.filesystemwatcher?cs- ...

Gruß,
Gersen
Bitte warten ..
Mitglied: rubberman
LÖSUNG 14.07.2014, aktualisiert 16.07.2014
Ungetestet etwa so:
01.
Const strObserve = "C:\ordner\der\überwacht\werden\soll" 
02.
Const strBatPath = "C:\pfad\deinedatei.bat" 
03.
Const strSec = "10" 
04.
 
05.
Set objWSHShell = CreateObject("WScript.Shell") 
06.
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") 
07.
Set colEvents = objWMIService.ExecNotificationQuery _ 
08.
  ("SELECT * FROM __InstanceCreationEvent WITHIN " & strSec & " WHERE " _ 
09.
  & "TargetInstance ISA 'CIM_DirectoryContainsFile' AND " _ 
10.
  & "TargetInstance.GroupComponent = 'Win32_Directory.Name=""" _ 
11.
  & Replace(strObserve, "\", "\\\\") _ 
12.
  & """'") 
13.
 
14.
Do 
15.
  Set objEvent = colEvents.NextEvent() 
16.
  strFile = Replace(Replace(Split(objEvent.TargetInstance.PartComponent, "=")(1), "\\", "\"), """", "") 
17.
  objWSHShell.Run "cmd /c """"" & strBatPath & """ """ & strFile & """""" 
18.
Loop
Wenn's funktioniert wird alle 10s in Ordner strObserve nach einer neuen Datei gesucht (Trigger ist ein entsprechendes Event). Der komplette Pfad dieser Datei wird ermittelt und an deine Batchdatei übergeben.

Grüße
rubberman
Bitte warten ..
Mitglied: kingspride
14.07.2014, aktualisiert um 22:42 Uhr
vielen dank

teste es gleich.

noch eine frage: ordner mit leerstelle im namen dürfte kein problem darstellen, richtig? sind ja anführungszeichen da...

(und wenn du mir noch eine schreibst für das event, dass eine datei entfernt wird, wäre ich vollends glücklich )

edit: schade, funktioniert noch nicht. zeile 6, nicht analysierbare abfrage...
Bitte warten ..
Mitglied: rubberman
14.07.2014, aktualisiert um 23:07 Uhr
(und wenn du mir noch eine schreibst für das event, dass eine datei entfernt wird, wäre ich vollends glücklich )
Statt __InstanceCreationEvent ein __InstanceDeletionEvent in Zeile 8.

Grüße
rubberman
Bitte warten ..
Mitglied: kingspride
14.07.2014 um 22:44 Uhr
danke ! btw, meinte zeile 7, nicht 6.
Bitte warten ..
Mitglied: rubberman
14.07.2014, aktualisiert um 23:06 Uhr
Hmm, dann muss ich wohl doch selbst mal testen.

EDIT OK, Kleiner Schreibfehler. Hab's oben im Code geändert. (Kill ggf. das alte Script im Taskmanager wscript.exe)
Bitte warten ..
Mitglied: rubberman
14.07.2014 um 23:33 Uhr
Sorry, war noch ein Fehler drin...
Bitte warten ..
Mitglied: kingspride
15.07.2014 um 00:05 Uhr
hey, danke dir nochmals

allerdings scheint immernoch was nicht zu klappen
das script startet, bleibt im hintergrund laufen, aber es passiert einfach nix, wenn ich eine neue datei in den ordner kopiere?
kann es sein, dass ein leerzeichen im pfad das problem ist, oder müsste das gehen?

vielen dank nochmals, du hast mir schon irsinnig viel weitergeholfen.
Bitte warten ..
Mitglied: rubberman
15.07.2014 um 00:26 Uhr
Ich hab mit Leerzeichen im Pfad getestet, funktioniert bei mir.

Wenn's kein zu großes Geheimnis ist, poste doch mal wie die ersten 3 Zeilen bei dir in der Realität aussehen.
Bitte warten ..
Mitglied: kingspride
16.07.2014 um 17:31 Uhr
01.
Const strObserve = "W:\Bibliotheken\Videos\videowall axel\" 
02.
Const strBatPath = "W:\Bibliotheken\Videos\videowall axel\create-playlist.bat" 
03.
Const strSec = "10" 
04.
 
05.
Set objWSHShell = CreateObject("WScript.Shell")  
06.
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")  
07.
Set colEvents = objWMIService.ExecNotificationQuery _  
08.
	("SELECT * FROM __InstanceCreationEvent WITHIN " & strSec & " WHERE " _  
09.
	& "TargetInstance ISA 'CIM_DirectoryContainsFile' AND " _  
10.
	& "TargetInstance.GroupComponent = 'Win32_Directory.Name=""" _  
11.
	& Replace(strObserve, "\", "\\\\") _  
12.
	& """'")  
13.
 
14.
Do 
15.
	Set objEvent = colEvents.NextEvent()  
16.
	strFile = Replace(Replace(Split(objEvent.TargetInstance.PartComponent, "=")(1), "\\", "\"), """", "")  
17.
	objWSHShell.Run "cmd /c """"" & strBatPath & """ """ & strFile & """"""  
18.
Loop
eigentlich nur kopiert...
Bitte warten ..
Mitglied: rubberman
LÖSUNG 16.07.2014, aktualisiert um 18:13 Uhr
eigentlich nur kopiert...
Joa, deshalb wollte ich ja auch wissen wie die ersten Zeilen bei dir aussehen, et voilà des Rätsels Lösung:
Wenn du den letzten Backslash hinter dem Pfad in strObserve mal entfernst, sollte es schon funktionieren (hatte ich dir auch anders vorgeturnt ).

Ansonsten: Die Batchdateien erben das Arbeitsverzeichnis vom VBScript. Sollte das VBScript also in einem anderen Verzeichnis liegen, dann ergänze in den Batchcodes unter dem @echo off noch die Zeile
cd /d "%~dp0"

Grüße
rubberman
Bitte warten ..
Mitglied: kingspride
16.07.2014 um 18:06 Uhr
vielen dank, funktioniert jetzt!!

dass mit den slashes passiert mir leider ständig^^
jeder brauchts anders...

jetzt hab ich nur noch eine frage.

der pfad wird scheinbar mit anführungszeichen übergeben, kann ich das irgendwie loswerden?
m3u hat damit leider probleme.
Bitte warten ..
Mitglied: rubberman
LÖSUNG 16.07.2014, aktualisiert um 18:13 Uhr
Ja klar. %1 enthält den übergebenen Parameter so wie er ankommt.
Die Tilde in %~1 würde umschließende Anführungszeichen entfernen.

Grüße
rubberman
Bitte warten ..
Mitglied: kingspride
16.07.2014 um 18:13 Uhr
ahhh danke!

geht jetzt alles.
Bitte warten ..
Ähnliche Inhalte
Windows Server
FIM Ordnerüberwachung Win2k8 PCI
Frage von connecthorWindows Server

Hi, im Zuge eines PCI Audith sollen gewisse Systemrelewandte Ordner auf ihre Integrität gemonitort werden. Die Ordnerüberwachung ist ja ...

Hosting & Housing
Problem mit Aufruf neuer Webseite
Frage von takvorianHosting & Housing2 Kommentare

Hallo zusammen, ich habe mir eine Webseite mittels FTP gesichert und auf den neuen Webserver wieder hochgeladen. Beim Aufruf ...

Batch & Shell

Batchdatei soll überprüfen, ob auf eine Log Datei

Frage von hoppalaBatch & Shell1 Kommentar

Hiho :) ! Ein Freund und ich haben eine Batchdatei erstellt, leider kommen wir bei einer Sache nicht weiter. ...

Batch & Shell

In Batchdatei mehrere Dateien auswählen

gelöst Frage von DoppellhelixBatch & Shell7 Kommentare

Hallo, ich habe eine Batchdatei, die mir innerhalb einer Logdatei (txt), die Zeilen neu formatiert. Dieses Script funktioniert hervorragend. ...

Neue Wissensbeiträge
Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 4 StundenGoogle Android2 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 4 StundenSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 7 StundenMicrosoft3 Kommentare

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 1 TagWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

Heiß diskutierte Inhalte
Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server38 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Router & Routing
ISC DHCP 2 Subnetze
gelöst Frage von janosch12Router & Routing18 Kommentare

Hallo, ich betreibe bei mir im Netzwerk einen ISC DHCP Server auf Debian, der DHCP verwaltet aktuell ein /24 ...

CPU, RAM, Mainboards
32 gb RAM zu wenig?
Frage von pcguyCPU, RAM, Mainboards13 Kommentare

Hallo zusammen, mein PC verfügt über 32GB Ram. Nun kriege ich bei grossen Dateien im Illustrator die Fehlermeldung das ...