我正在尝试使用Powershell在新文件上运行脚本。脚本我上网看起来像这样。
### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "c:\folder_to_lookat"
$watcher.Filter = "*.*"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true
### DEFINE ACTIONS AFTER A EVENT IS DETECTED
$action = { $path = $Event.SourceEventArgs.FullPath
$changeType = $Event.SourceEventArgs.ChangeType
$logline = "COPY new FROM '$path' DELIMITER '#';"
Write-Host "New File indicated"
Clear-content C:\script_to_run.txt
$script = Get-Content C:\original_script.txt
$script[0] = $logline
$script | Out-File C:\script_to_run.txt
psql -d postgres -U postgres -w -c "\i C:\script_to_run.txt"
Write-Host "New file caculated!"
}
### DECIDE WHICH EVENTS SHOULD BE WATCHED + SET CHECK FREQUENCY
$created = Register-ObjectEvent $watcher "Created" -Action $action
while ($true) {sleep 5}
此脚本检查文件夹中是否有新文件。如果有,用psql运行脚本来做某事。但是,有一些问题。
它给了我多个
写主机“新文件指示”
写主机“新文件计算!”
对于文件夹中的单个新文件。这真的不应该发生。
psql脚本无法运行。 psql -d postgres -U postgres -w -c“\ i C:\ script_to_run.txt” 这一部分。
即使它给了我多个写主机,Postgres也没有发生任何事情。没有一个变化。 script_to_run.txt脚本很安静,只需几秒即可完成。
psql Line本身运行得非常好,如果我只是输入它并且不使用任何PowerShell脚本。
Picture of Powershell running psql script
有什么我想念的东西吗? (就像fflush一样)我是Powershell的新手,对任何事情都不确定。
感谢阅读!