【问题标题】:Move file to different folder location将文件移动到不同的文件夹位置
【发布时间】:2018-01-17 11:04:55
【问题描述】:
我正在尝试创建一个 PowerShell 脚本,该脚本将文件列表移动到另一个文件夹中,具体取决于文件名。文件名“Test-AMM - Report”的一个示例。
原始位置
\\oltnas6uk\sd.test.com$\PROJECTS\Account Management\Test-
AMM - 报告
文件目的地
\\
ammnasuk\rd.test-
amm.com$\Business Management\Regular\Reporting
粗体突出显示我可以用来确定文件将进入哪个位置的键盘。
【问题讨论】:
标签:
powershell
file-location
【解决方案1】:
这样做非常简单。
首先获取您要移动到名为 $files 的数组中的文件列表:
$files=get-childitem "\\oltnas6uk\sd.test.com$\PROJECTS\Account Management\"
然后你使用 foreach 循环遍历数组,并在正则表达式模式下使用 switch 来匹配文件上的模式并确定要做什么:
foreach ($f in $files) {
switch -regex ($f.Name) {
"AMM" {
try {
Move-Item -Path $f.FullName -Destination "\\ammnasuk\rd.test-amm.com$\Business Management\Regular\Reporting" -Force
} catch {
Write-Host "Couldn't move file ($f.Name), error was $($_.Exception.Message)" -foregroundcolor red
}
break;
}
"BMM" {
try {
Move-Item -Path $f.FullName -Destination "\\bmmnasuk\rd.test-amm.com$\Business Management\Regular\Reporting" -Force
} catch {
Write-Host "Couldn't move file ($f.Name), error was $($_.Exception.Message)" -foregroundcolor red
}
break;
}
}
}
}
我建议您在脚本中添加日志记录,或者花足够的时间确保您的模式匹配不会产生意外结果。如果目标中有很多文件,还值得对所有预期匹配项进行比较,以查看有多少文件不符合您的任何规则。