【发布时间】:2014-12-06 10:09:50
【问题描述】:
我有一个名为 C:\2014-15 的文件夹,每个月都会创建新的子文件夹,其中包含 csv 文件,即
- C:\2014-15\Month 1\LTC
- C:\2014-15\Month 2\LTC
- C:\2014-15\Month 3\LTC
如何编写一个脚本来检测每个月何时创建 LTC 子文件夹并将 csv 文件移动到 N:\Test?
更新:
$folder = 'C:\2014-15'
$filter = '*.*'
$destination = 'N:Test\'
$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{
IncludeSubdirectories = $true
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
Copy-Item -Path $path -Destination $destination
}
我得到的错误是:
Register-ObjectEvent : 无法订阅事件。源标识符为“FileCreated”的订阅者已存在。 在行:8 字符:34 + $onCreated = Register-ObjectEvent
【问题讨论】:
-
到目前为止你得到了什么代码?
-
嗨。我没有任何可以工作的代码。我使用过 FileSystemWatcher 和 move-item。
-
脚本运行计划是什么?每天(过夜)?
-
请解释您尝试了什么以及为什么它不起作用(错误消息?)如果文件夹被移动到其他地方,那么您似乎只要文件夹存在就移动它,因为文件夹应该通常是空的。
-
发生错误是因为您正在测试,已经运行
Register-ObjectEvent。如果您的脚本每月运行一次并创建 /Month x/LTC 目录以及移动日志文件会更容易吗?