PowerShell to the rescue.
The script below is fairly simple(and a little unrefined), but it does the job nicely. The script will continue to run until you press a key, at which point it will de-register all of its events and exit
The configurable parts are:
- You can set the folder to watch with the $inputFolder variable
- You can set the folder to copy changes to with the $outputFolder variable
- You can set the extensions of the files that you want to copy with the $filters variable
$inputFolder = Resolve-Path '..\inputDirectory' $outputFolder = Resolve-Path '..\outputDirectory' $filters = @('*.css', '*.js', '*.html') $messageData = "$inputFolder|$outputFolder" function RegisterWatcher($fileFilter) { $fsw = New-Object IO.FileSystemWatcher $inputFolder, $fileFilter -Property @{IncludeSubdirectories = $true;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'} Register-ObjectEvent $fsw Changed -SourceIdentifier "FileChanged - $fileFilter" -MessageData $messageData -Action { $sourceItem = $Event.SourceEventArgs.FullPath $targetItem = $sourceItem.Replace($Event.MessageData.Split('|')[0], $Event.MessageData.Split('|')[1]) Copy-Item $sourceItem $targetItem Write-Host "Copied $sourceItem" } } foreach($filter in $filters) { RegisterWatcher $filter } Write-Host "Press any key to exit" while ($true) { if ($Host.UI.RawUI.KeyAvailable) { break; } Start-Sleep -m 1000 } foreach($filter in $filters) { Unregister-Event "FileChanged - $filter" }
No comments:
Post a Comment