Powershell:移动子文件夹但忽略根目录中的文件?

xpcnnkqh  于 2022-12-29  发布在  Shell
关注(0)|答案(2)|浏览(165)

得到了我认为是一个相当简单的问题,但经过几个小时的谷歌搜索,我找不到答案。我很确定Powershell是多才多艺的足以做到这一点,我只是不知道如何去编码。
所以基本上,我有这个:

  • W:\(根)
  • 主文件夹1
  • 子文件夹1
  • 子-子文件夹1
  • 子-子文件夹2
  • 子-子文件夹3
  • File1.fil
  • File2.fil
  • File3.fil

我所要做的就是让Powershell搜索子文件夹1,并将子文件夹1-3(及其内容)移动到子文件夹1中,但忽略文件1-3。
我所编写的语法如下所示:

$source = "W:\Main Folder 1\Subfolder 1\"
$destination = "W:\Main Folder\"

Get-ChildItem $source -attributes D -Recurse | Move-Item -Destination "$destination" -Force -Verbose

当我-WhatIf它看起来应该工作,但当我尝试它,我得到可怕的“不能创建一个文件时,该文件已经存在”(基本上它是说,它不能创建文件夹在主文件夹1与相同的名称,从子文件夹1).我有一个-Force标志那里,我以为这将做的伎俩,但...
你知道怎么强迫它移动它们吗?(我不想让它删除现有的文件夹来移动新的文件夹。)

koaltpgm

koaltpgm1#

如果我明白你想干什么的话这个密码是有效的。

$source = "G:\Test\A\FolderTwo"
$destination = "G:\Test\A"

Get-ChildItem -Path $source -Directory | 
    Move-Item -Destination $destination -Force -Verbose

详细输出:

VERBOSE: Performing the operation "Move Directory" on target "Item: G:\Test\A\FolderTwo\Folder2A Destination: G:\Test\A\Folder2A".
VERBOSE: Performing the operation "Move Directory" on target "Item: G:\Test\A\FolderTwo\Folder2B Destination: G:\Test\A\Folder2B".

源文件夹中的7个常规文件仍保留在那里。源文件夹中的目录及其所有内容(包括子文件夹)都被移动。
只需确保源目录和目标目录定义正确。注意不需要-Recurse开关,因为移动整个目录也会移动其内容。
编辑删除不必要的报价每mklelement 0的评论如下!

fsi0uk1n

fsi0uk1n2#

这应该会让你更进一步。将"$($folder.name)-2"更改为你想要附加新文件夹名称的任何东西。

$destination = "W:\Main Folder\"
$source = Get-ChildItem "W:\Main Folder 1\Subfolder 1\" -Directory

foreach ($folder in $source) {
    $folder | Move-Item -Destination $destination\"$($folder.name)-2"
}

相关问题