Я пишу что-то в powershell, чтобы посмотреть файл 'A' на наличие изменений и открыть файл 'B', когда это произойдет.Единственная проблема заключается в том, что файл Excel (B) имеет код VBA для запуска при открытии, который должен скопировать данные в файл «А».Судя по моим исследованиям, мне кажется, что для этого мне нужно открыть файл «А», поскольку это должен быть файл .xlsx, и его открытие запускает непрерывный цикл.
Я пробовал команду сна, но, похоже,как будто он все еще просматривает файл во время или перед сном, а затем просто открывает файл снова, как только он ожидает, сколько времени я ему сообщу.
Как заставить наблюдателя перестать смотреть на минуту или около того?
Вот код, с которым я сейчас работаю:
Function Register-Watcher {
param ($folder)
$filter = "*.xlsx"
$folder = "\\powershell\watcher\test\folder"
$watcher = New-Object IO.FileSystemWatcher $folder, $filter -Property @{
IncludeSubdirectories = $false
EnableRaisingEvents = $true
}
$changeAction = [scriptblock]::Create('
$path = $Event.SourceEventArgs.FullPath
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file $name was $changeType at $timeStamp"
$Excel = New-Object -ComObject Excel.Application
$Excel.Workbooks.Open("\\powershell\watcher\test\folder\fileB.xlsm")
sleep 60
')
Register-ObjectEvent $Watcher "Changed" -Action $changeAction
}
Register-Watcher "\\powershell\watcher\test\folder\fileA.xlsx"
$Change