admin 發表於 2023-12-16 04:17:11

monitor a folder and trigger a command-line action when a file is created ?

At work we use Powershell to monitor folders.
It can be used since Windows Vista (.NET and PowerShell is preinstalled) without any additional tools.

This script monitors a certain folder and writes a logfile. You can replace the action and do whatever you want e.g call an external tool

Example log file
11/23/2014 19:22:04, Created, D:\source\New Text Document.txt
11/23/2014 19:22:09, Changed, D:\source\New Text Document.txt
11/23/2014 19:22:09, Changed, D:\source\New Text Document.txt
11/23/2014 19:22:14, Deleted, D:\source\New Text Document.txt
StartMonitoring.ps1
### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
    $watcher = New-Object System.IO.FileSystemWatcher
    $watcher.Path = "D:\source"
    $watcher.Filter = "*.*"
    $watcher.IncludeSubdirectories = $true
    $watcher.EnableRaisingEvents = $true

### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
    $action = { $path = $Event.SourceEventArgs.FullPath
                $changeType = $Event.SourceEventArgs.ChangeType
                $logline = "$(Get-Date), $changeType, $path"
                Add-content "D:\log.txt" -value $logline
            }   
### DECIDE WHICH EVENTS SHOULD BE WATCHED
    Register-ObjectEvent $watcher "Created" -Action $action
    Register-ObjectEvent $watcher "Changed" -Action $action
    Register-ObjectEvent $watcher "Deleted" -Action $action
    Register-ObjectEvent $watcher "Renamed" -Action $action
    while ($true) {sleep 5}
How to use

[*]Create a new text file
[*]Copy & paste the above code
[*]Change the following settings to your own needs:
[*]folder to monitor: $watcher.Path = "D:\source"
[*]file filter to include only certain file types: $watcher.Filter = "*.*"
[*]include subdirectories yes/no: $watcher.IncludeSubdirectories = $true
[*]Save and rename it to StartMonitoring.ps1
[*]Start monitoring by Right click » Execute with PowerShell
To stop monitoring, it's enough to close your PowerShell window
頁: [1]
查看完整版本: monitor a folder and trigger a command-line action when a file is created ?