我想将文件从一个位置移动到另一位置,但又不想从我要移动文件的目录的子文件夹中移动任何文件。
我有以下代码,但这将文件移动到子文件夹中。此外,扩展名只能是.xml和.pdf。
此脚本将所有文件从$MoveThese
移到目标位置,即使是子文件夹中的文件,例如C:\Test\Folder1\Subfolder
。任何建议都会有所帮助。
$MoveThese = "C:\Test\Folder1", "C:\Test2\Folder2", "C:\Test3\Folder3"
$Destination = "C:\Test\Docs", "C:\Test2\Docs", "C:\Test3\Docs"
For($i=0; $i -lt $FailFolders.Length; $i++){
Get-ChildItem -Path $MoveThese[$i] -Recurse -Include "*.xml", "*.pdf" | Move-Item -Destination $Destination[$i]
}
答案 0 :(得分:2)
如果您不想将文件放在子文件夹中,请不要使用-Recurse
。根据{{3}},此“获取指定位置以及该位置的所有子项中的项。”
缺少-Include
语句的这一部分:
-Include参数仅在命令中包含- -递归参数
解决方案:
Get-ChildItem $MoveThese[$i] -File |
Where-Object {$_.Extension -in @(".xml",".pdf")} |
Move-Item -Destination $Destination[$i]
答案 1 :(得分:0)
不幸的是,如果没有-Recurse
开关,include将无法工作,除非该路径使用C:\Windows*
中的通配符
这可能为您做到了:
$MoveThese = "C:\Test\Folder1", "C:\Test2\Folder2", "C:\Test3\Folder3"
$Destination = "C:\Test\Docs", "C:\Test2\Docs", "C:\Test3\Docs"
For($i=0; $i -lt $MoveThese.Length; $i++){
Get-ChildItem $MoveThese[$i] -File |
Where-Object { $_.Name -like "*.xml" -or $_.Name -like "*.pdf" |
Move-Item -Destination $Destination[$i] -Force
}