【发布时间】:2016-07-13 19:45:05
【问题描述】:
我需要一个脚本,允许我将文件拖放到监视文件夹中的 4 个文件夹中的任何一个中,然后根据拖放的文件夹将该文件复制到两个文件夹中。
观看的文件夹:C:\Users\Username\Desktop\PS DROP 文件夹
C:\Users\用户名\桌面\PS DROP FOLDERS\18x23
复制到 C:\Users\Username\Desktop\IJET RIP FOLDERS\LARGE 18x23
复制到 C:\Users\Username\Desktop\STE RIP - HR FOLDERS\LARGE 16x20-18x23C:\Users\用户名\桌面\PS DROP FOLDERS\LARGE
复制到 C:\Users\Username\Desktop\IJET RIP FOLDERS\LARGE 16x20
复制到 C:\Users\Username\Desktop\STE RIP - HR FOLDERS\LARGE 16x20-18x23C:\Users\Username\Desktop\PS DROP FOLDERS\MANUAL
复制到 C:\Users\Username\Desktop\IJET RIP FOLDERS\MANUAL 15x15
复制到 C:\Users\Username\Desktop\STE RIP - HR FOLDERS\MANUAL 15x15C:\Users\用户名\桌面\PS DROP FOLDERS\SMALL
复制到 C:\Users\Username\Desktop\IJET RIP FOLDERS\SMALL 16x20
复制到 C:\Users\Username\Desktop\STE RIP - HR FOLDERS\SMALL 16x20
以下是我目前用于监视文件夹部分的代码(取自另一个 Q/A),但我无法弄清楚有条件地复制到多个文件夹的逻辑。似乎有比 IF 语句更好的方法。
### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\Users\Username\Desktop\PS DROP FOLDERS"
$watcher.Filter = "*.ps"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true
### DEFINE ACTIONS AFTER A EVENT IS DETECTED
$action = {
HELP INQUIRY CODE HERE
}
### DECIDE WHICH EVENTS SHOULD BE WATCHED + SET CHECK FREQUENCY
$created = Register-ObjectEvent $watcher "Created" -Action $action
### $changed = Register-ObjectEvent $watcher "Changed" -Action $action
### $deleted = Register-ObjectEvent $watcher "Deleted" -Action $action
### $renamed = Register-ObjectEvent $watcher "Renamed" -Action $action
while ($true) {sleep 5}
抱歉,缺乏技巧。我不指望一个解决方案,但一些指导会很好。谢谢。
附:这是为了将文件路由到两个不同成像系统的 RIP 程序的热文件夹。
【问题讨论】:
-
这看起来是一个不错的起始模板,到目前为止您尝试过什么?
-
我建议运行
Get-Help about_Switch并使用Switch命令来定义案例和操作。然后对于情况可能类似于{(split-path $_.directory -leaf) -eq '18x23'}{$_|Copy-Item 'C:\PathA';$_|Copy-Item 'C:\PathB'} -
谢谢!你真的为我指明了正确的方向。工作代码如下。
标签: .net powershell