[Обратите внимание, что это репост вопроса, который не смог продемонстрировать проблему, так как он использовал только фрагменты моего фактического кода. Это реальный код, и он определенно не работает в моей системе]
Я пытаюсь добавить имя файла в конец предопределенного пути в PowerShell v1.0, но путь не добавляется заранее.
Set-PSDebug -Trace 2
## Configure here
$sourceFolder = "C:\Users\myusername\Desktop\Folder 1"
$fileFilter = "*.ext"
$destinationFolder = "C:\Folder 2"
$logFile = "C:\Users\myusername\Desktop\ofp_dupe_log.txt"
### Add an entry to log file to say started script
$logline = "`n`n############################################################`n$(Get-Date), ext_dupe script started`nWatching: $sourceFolder`nDestination 1: $destinationFolder1`nDestination 2: $destinationFolder2`n############################################################"
Add-content $logFile -value $logline
### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = $sourceFolder
$watcher.Filter = $fileFilter
$watcher.IncludeSubdirectories = $false
$watcher.EnableRaisingEvents = $true
### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
$action = { $path = $Event.SourceEventArgs.FullPath
$changeType = $Event.SourceEventArgs.ChangeType
$source_file = Split-Path $path -leaf
$destinationFile = $destinationFolder+"\"+$source_file
$logline = "$(Get-Date), $changeType, $path`ndest1: $destinationFile"
Add-content "C:\Users\myusername\Desktop\ofp_dupe_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}
Я не вижу, что не так, но мой файл logFile.txt показывает только:
############################################################
07/31/2019 17:09:47, ext_dupe script started
Watching: C:\Users\myusername\Desktop\Folder 1
Destination 1:
Destination 2:
############################################################
07/31/2019 17:09:52, Changed, C:\Users\myusername\Desktop\Folder 1\match1.ext
dest1: \match1.ext
07/31/2019 17:09:52, Changed, C:\Users\myusername\Desktop\Folder 1\match1.ext
dest1: \match1.ext
т.е. строка $ destinationFolder не имеет префикса перед именем файла.
ПРИМЕЧАНИЕ. Людям, которые задаются вопросом, использую ли я PowerShell v1.0, я основываю это утверждение на том факте, что в окне свойств оболочки PS отображается v.10
в пути. Это работает под управлением Nuder Win10. Увидеть ниже:
$destinationFile
создается и ссылается на$destinationFolder
извне блока сценария. Область блока скрипта ничего не знает об этой переменной. - person AdminOfThings   schedule 31.07.2019