Powershell-Skript ausführen .bat-Datei, wenn eine Datei zu einem Ordner Hinzugefügt wird

Ich würde gerne monitor Windows 7 Ordner und eine .bat-Datei, die ausgeführt werden, wenn alle neuen Dateien, die zum Ordner Hinzugefügt werden. Es scheint, wie ich sollte in der Lage sein, dies zu tun, verwenden Sie powershell, die auf dem computer installiert ist.

Ich gelesen habe, einige Antworten wie diese eine aber ich bin nicht in der Lage, alles zu arbeiten, noch durch das ändern, was ich sehe. Details:

Ordner zu überwachen:

c:\aaa\bbb\monitorThis

Batch-Datei ausgeführt werden, wenn ein .htm-Datei Hinzugefügt wird, um den überwachten Ordner:

c:\aaa\bbb\runA.bat

Powershell-Skript-Datei:

c:\aaa\bbb\folderWatcher.ps1

Kann jemand beschreiben, was der Inhalt der folderWatcher.ps1 Aussehen sollte, einschließlich der Zeile mit dem Befehl zum ausführen .bat-Datei, die Registrierung und die Registrierung der Veranstaltung, und so weiter?

Auch, ist rechts-Klick auf die .ps1-Datei und wählen Sie "mit PowerShell Ausführen" den Weg zu beginnen, die überwachung, und wenn ja, wie verhindern Sie es?

UPDATE:

Wie gewünscht, hier ist was ich bisher für folderWatcher.ps1, aber es ist nur ein Anfang, von den Ideen, die ich gesehen habe:

$folder = "c:\aaa\bbb\toConvert"
$filter = "*.*"

$fsw = new-object System.IO.FileSystemWatcher $folder, $filter -Property @{
  IncludeSubDirectories=$false
NotifyFilter = [System.IO.NotifyFilters]'FileName, LastWrite'
}

 $onCreated = Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {

  Start-Process cmd -ArgumentList "/c runA.bat" -WorkingDirectory "C:\aaa\bbb"
}

Hinweis: "erneut filtern, ist mir egal, auf welche Art von Datei Hinzugefügt wird, da wir nur dabei sein .htm Dateien in diesem Ordner, so das nichts Hinzugefügt werden möchte ich auslösen .bat.

UPDATE II

Habe ich versucht, den code von Dennis unter, aber ich bekomme nichts. Ich nur doppelt überprüft alle meine Pfade, um sicherzustellen, dass Sie die waren das äquivalent von dem, was er hat. Ich habe auch gerade eine neue test-version mit einfacheren Wege, so kann ich genau posten was ich habe, ohne zu anonymisieren:

 $folder = 'C:\Developer\psTest' # Enter the root path you want to monitor. 
 $filter = '*.htm'  # You can enter a wildcard filter here. 

 $fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property  @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'}

 Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action { 
 $name = $Event.SourceEventArgs.Name 
 $changeType = $Event.SourceEventArgs.ChangeType 
 $timeStamp = $Event.TimeGenerated 
 Write-Host "The file '$name' was $changeType at $timeStamp" -fore green 
 cmd.exe /c 'C:\Developer\psTest\runAnt.bat'
 }

Klar zu sein, was ich Tue:

Ich habe eine Datei, die heißt jetzt C:\Developer\psTest\FolderWatcherTest.ps1, die den code enthält, direkt über.

Wenn ich mit der rechten Maustaste darauf und wählen Sie " mit PowerShell Ausführen, ein console-Fenster blinkt, mit etwas text, aber es ist zu schnell zu Lesen, bevor es geschlossen wird.

Wenn ich dann ziehen Sie ein .htm-Datei in C:\Developer\psTest passiert nichts.

Legte ich die Registrierung code in eine Datei namens FolderWatcherStop.ps1, und wenn ich auf, dass die Konsole blinkt mit den roten text, wieder zu schnell gelesen, dann schließt es.

Was mache ich falsch? Etwas, das ich sicher bin.

UPDATE III

Folgenden Dennis ' Rat ich habe diese arbeiten. Dieser nahm das ändern der batch-Datei ein wenig, um den vollständigen Pfad der ANT-build-ich will laufen, aber es funktioniert.

Hinweis: ich glaube, ich habe gerade, warum der trigger wiederholt, aktualisiert.

  • Können Sie bitte Ihre code - folderwatcher.ps1
  • Okay oben gepostet. Es ist genau das, was ich in der Lage gewesen, zu erraten, bisher, nur ein Anfang.
InformationsquelleAutor user3762977 | 2015-09-04
Schreibe einen Kommentar