Powershell перемещает файлы, но не подпапки - PullRequest
1 голос
/ 27 января 2020

Мне нужно переместить все файлы из папки в другую, но не в подпапки или что-либо внутри нее. Я понятия не имею об имени или расширении файлов, которые мне нужно переместить (а некоторые из них не будут иметь), поэтому я не могу использовать -Include. Вот пример структуры моей папки:

  • Папка1
    • Файл1
    • Файл2
    • Папка2
      • Файл3
      • Файл4
  • Папка3

Я хочу переместить Файл1 и Файл2 в Папку3 без перемещения Файл3 и Файл4.

Пока у меня есть что-то похожее на это:

$SouceFolder = "c:\Folder1\*"
$DestinationFolder = "c:\Folder3"

Move-Item -Path $SouceFolder -Destination $DestinationFolder

Но оно копирует всю структуру папок со всеми файлами.

Спасибо.

Решение:

$SouceFolder = "c:\Folder1"
$DestinationFolder = "c:\Folder3"

Robocopy $SouceFolder $DestinationFolder /mov

Примечание. Я удалил \ * из папки1.

Ответы [ 4 ]

1 голос
/ 27 января 2020

Это должно работать.

Обратите внимание, что я не добавляю \* в SourceFolder

$SourceFolder      = "c:\Folder1"
$DestinationFolder = "c:\Folder3"

# create the target folder if it does not already exist
if (!(Test-Path -Path $DestinationFolder -PathType Container)) {
    $null = New-Item -Path $DestinationFolder -ItemType Directory
}
Get-ChildItem -Path $SourceFolder -File | Move-Item -Destination $DestinationFolder
1 голос
/ 27 января 2020

Вы пытались использовать опцию -Recurse, как эта?

Get-ChildItem -Path "c:\Folder1\*.*" -Recurse | Move-Item -Destination "c:\Folder3\"

Существует лучшая альтернатива Robocopy для копирования файлов. С помощью команды robocopy вы можете лучше контролировать то, что копируется с кодами ошибок, если это не удается.

в вашем случае это был бы простой код, подобный этому.

$SouceFolder = "c:\Folder1"
$DestinationFolder = "c:\Folder3"
Robocopy $SouceFolder $DestinationFolder

см. Официальную документацию robocopy для получения дополнительной опции

0 голосов
/ 28 января 2020
0 голосов
/ 27 января 2020

Попробуйте это:

Get-Childitem "FilePath" -Recurse | Where-Object {!($_.PSIscontainer)} | Move-Item -Path $_.Fullname -Destination "Destination"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...