J'ai ce script qui fonctionne biensous-dossier spécifique d'analyse de chaque dossier dans powershell
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\folder_to_scan\"
$watcher.Filter = "*.nrrd"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true
$action =
{
$path = $Event.SourceEventArgs.FullPath
Write-Host "The file '$path' was $changeType at '$(Get-Date)'" -fore green
}
Register-ObjectEvent $watcher "Created" -Action $action
while ($true) {sleep 3600}
Mais dans mon C:\folder_to_scan\
j'ai beaucoup de sous-répertoires comme 00123
, 00245
, 56002
... Et à l'intérieur de chacun d'entre eux je \THE_DIRECTORY_TO_SCAN
donc j'ai essayé ce $watcher.Path = "C:\folder_to_scan\*\THE_DIRECTORY_TO_SCAN\"
et $watcher.Path = "C:\folder_to_scan\[0-9]*\THE_DIRECTORY_TO_SCAN\"
Mais cela ne fonctionne pas. Est-il possible d'utiliser un caractère générique dans cette situation?
Sinon, comment utiliser le chemin avec plusieurs FileSystemWatcher
? Parce que je pensais que nous pouvons utiliser cette
Resolve-Path "C:\folder_to_scan\*\THE_DIRECTORY_TO_SCAN\" | Select -ExpandProperty Path
Je suis désolé, mais comment cela fonctionne bien? while ($ true) {sleep 3600} Ceci gardera votre script en attente d'éternité car $ true sera toujours vrai. Qu'est-ce que vous voulez faire est un do {} while() Alors ce que vous voulez faire est, analyser chaque sous-répertoire qui a un nom comme "THE_DIRECTORY_TO_SCAN"? Ce que je ferais est d'utiliser Get-childitem et rechercher tous les chemins qui ont ce nom dans le nom de fold.When vous obtenez ceux-ci, alors vous commencez à vous concentrer sur les surveiller. – Snak3d0c
Le 'sommeil 3600' est à surveiller seulement une fois par heure. J'ai court-circuité ce code parce qu'il était plus complexe et que je faisais beaucoup plus de choses en «action». Quoi qu'il en soit, comment donner une liste de chemin à 'FileSystemWatcher'? – Raccoon