Je cherche à corriger un script PowerShell que je possède et à lui ajouter des fonctionnalités supplémentaires. Actuellement, il fonctionne comme prévu: lorsqu'un fichier est enregistré dans un répertoire, l'élément est déplacé dans un nouveau.
Ce que je cherche à ajouter, c’est au lieu de simplement écraser le fichier existant, mais de le renommer yyyyMMdd
. Les fichiers sont tous identiques et portent toujours le même nom / extension. Il serait donc judicieux d’ajouter ceci, ce qui serait très utile pour un contrôle de version semi-automatique.
$folder = 'C:\scripts\test'
$filter = '*.*' # <-- set this according to your requirements
$destination = 'H:\Office Documents\text_move'
$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{
IncludeSubdirectories = $true # <-- set this according to your requirements
NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
}
$onCreated = Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
$path = $Event.SourceEventArgs.FullPath
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp"
$dirname = [io.path]::GetDirectoryName($folder)
$filename=[io.path]::GetFileNameWithoutExtension($file)
$ext = [io.path]::GetExtension($file)
$newpath = "$destination\$filename\$(get-date -f yyyyMMdd)$ext"
Move-Item $path -Destination $destination -verbose
}
Je comprends que je dois ajouter get-date
quelque chose à la ficelle , mais je ne peux pas sembler si longtemps que je sache comment ou où ajouter cela pour que cela fonctionne comme je le pense.