使用powershell我想搜索多个目录中包含1个名为incoming的文件夹的子文件夹数组,并将文件从传入文件移动到临时区域使用相同的文件夹名称作为其来源。将子文件夹阵列中的文件移动到具有相同阵列名称的新目录中
IE:文件到文件夹中是这样的:
Z:\文件夹1 \进入\文件*,Z:\文件夹2 \进入\文件*,Z:\ folder3 \ SUB1 \进入\文件。 *,Z:\ folder3 \ SUB2 \来电\文件*等
然后将需要使用相同的文件夹结构被移动到一个临时区域:
\ NAS \分期\ folder1中\来电\文件*,\ nas \ staging \ folder2 \ incoming \ file。*,\ nas \ staging \ folder3 \ sub1 \ incoming \ file。*,\ nas \ staging \ folder3 \ sub2 \ incoming \ file。*等
基本上我想从中提取的唯一子文件夹是包含带有文件的“传入”文件夹的文件夹。由于没有预定义的文件夹名称,除了子文件夹“Incoming”,我需要遍历Z:内的每个文件夹。
任何帮助或建议将不胜感激。
我能够想出这个办法,将不包括“传出”的文件夹结构有情调地移动到暂存目录中,但是在我的环境中,会有许多排除项来检查这种方式。如果需要,还有机会将文件从列表中移动到特定文件夹?
$from = 'C:\ftp'
$to = 'C:\staging'
$excludeMatch = @("Outgoing")
Get-ChildItem -Path $from -Recurse -Exclude $exclude |
where { $excludeMatch -eq $null -or $_.FullName.Replace($from, "") -notmatch $excludeMatch } |
Copy-Item -Destination {
if ($_.PSIsContainer) {
Join-Path $to $_.Parent.FullName.Substring($from.length)
} else {
Join-Path $to $_.FullName.Substring($from.length)
}
} -Force -Exclude $exclude
到目前为止您尝试过什么?这是PowerShell的一个相当简单的任务,但这里的人不会为你编写整个脚本。 – alroc
使用Robocopy可能会更好地解决这个问题。 Robocopy可以基于名称匹配模式复制文件并维护目录结构。 – alroc