powershell - 自动检测文件而不是使用任务计划程序
问题描述
我有这段代码,它从:d2ve38282 中提取一个文件并将其本地放入:D:\Test\MEP\TST\input\tEST。
第一次尝试:
Move-Item "\\d2ve38282\AS2\Inbound\Test Orders\*.txt" -Destination "D:\Test\MEP\TST\input\tEST"
第二次尝试:
$FTBM = 'D:\Test Folder'
$FLTR = '*.*'
$watcher = New-Object IO.FileSystemWatcher $FTBM, $FLTR -Property @{
IncludeSubDirectories = $false;
NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
}
Move-Item "D:\Test Folder\*.txt" -Destination "D:\Test Folder 2"
Register-ObjectEvent $watcher Created -SourceIdentifier FileCreated -Action {
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
}
#Unregister-Event FileCreated
第三次尝试:
$FTBM = 'D:\Test Folder'
$FLTR = '*.*'
$watcher = New-Object IO.FileSystemWatcher $FTBM, $FLTR -Property @{
IncludeSubDirectories = $false;
NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
}
Register-ObjectEvent $watcher Created -SourceIdentifier FileCreated -Action {
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
Move-Item "D:\Test Folder\*.txt" -Destination "D:\Test Folder 2"
}"
#Unregister-Event FileCreated
当它在此文件夹中找到测试订单时,如何将其设置为自动运行:D:\Test Folder\?
解决方案
你可以使用这样的东西:
$folder = 'c:\scripts\test' # Enter the root path you want to monitor.
$filter = '*.*' # You can enter a wildcard filter here.
# In the following line, you can change 'IncludeSubdirectories to $true if required.
$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'}
# Here, all three events are registerd. You need only subscribe to events that you need:
Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp" -fore green
Out-File -FilePath c:\scripts\filechange\outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"}
Register-ObjectEvent $fsw Deleted -SourceIdentifier FileDeleted -Action {
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp" -fore red
Out-File -FilePath c:\scripts\filechange\outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"}
Register-ObjectEvent $fsw Changed -SourceIdentifier FileChanged -Action {
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file '$name' was $changeType at $timeStamp" -fore white
Out-File -FilePath c:\scripts\filechange\outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"}
Dot Net 版本总是比 WMI 版本好。希望能帮助到你。
推荐阅读
- javascript - node.js 是否在主线程中运行异步文件读/写?
- json - 如何将双引号中的内容与golang中的正则表达式匹配?
- hyperledger - 错误:没有来自任何对等方的有效响应(在运行 ./createpeerAdmincard.sh 时)
- ios - 仅使用属性字符串的标记列表
- drools - DMN 与 DRL 的流口水
- html - 使用 HTML 和 CSS 制作移动响应式图像
- javascript - 同一行上的多个 jQueryUI 可排序对象
- mysql - MySQL 8.0.x 导入远比 5.7.x 慢
- jquery - SSL 安全站点中的混合 https 内容
- python - 使用不同的优化器运行 Keras Sequential 模型