Переместить файлы из одного места в другое и исключить подпапки - PullRequest
0 голосов
/ 05 октября 2018

Я хочу переместить файлы из одного места в другое, но не перемещать файлы из подпапок в каталоге, из которого я перемещаю файлы.

У меня есть следующий код, но он перемещает файлы в подпапках.Кроме того, расширения должны быть только .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] 
}

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Включить не работает без ключа -Recurse, к сожалению, если путь не использует подстановочный знак, как в 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
}
0 голосов
/ 05 октября 2018

Если вам не нужны файлы в подпапках, не используйте -Recurse.Согласно документации Get-ChildItem this "Получает элементы в указанных местах и во всех дочерних элементах мест."


Пропущена эта часть оператора -Include:

Параметр -Include действует только в том случае, если команда включает параметр -Recurse

Решение:

Get-ChildItem  $MoveThese[$i] -File |
    Where-Object {$_.Extension -in @(".xml",".pdf")} |
    Move-Item -Destination $Destination[$i]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...