【发布时间】:2018-10-16 00:22:05
【问题描述】:
我有一个高级文件夹(称为“级别 0”),其中包含大约一百个子文件夹(“级别 1”),这些子文件夹中包含较低级别的子文件夹和文件(“级别 2”)。我需要将每个文件和文件夹从“级别 2”动态移动到其级别 1 子文件夹(或相对而言 - 它的父级)。
为了更好地可视化:
主文件夹 ├ 父文件夹 1 │ ├─ 子文件夹A │ │ ├─ 档案A │ │ └─ 档案B │ ├─ 子文件夹 B │ │ ├─ 档案C │ │ └─ D档 │ ├─ 档案E │ └─ F档 . . ...许多文件夹更多... . └─ 父文件夹 134 ├─ 子文件夹 CS │ ├─ 档案AGF │ └─ 档案 ARH ├─ 档案ROQ └─ 档案 JGL我需要从其父文件夹中的任何子文件夹的内容中移动所有内容。如上,您可以看到父文件夹中可能已经有一些文件(例如文件 E、F),它们应该保留。
目标:
主文件夹 ├─ 父文件夹 1 │ ├─ 档案A │ ├─ 档案B │ ├─ 档案C │ ├─ 档案D │ ├─ 档案E │ └─ F档 ├─ 父文件夹 119 │ ├─ 档案AZA │ ├─ 档案AZB │ ├─ 档案AZC │ └─ 档案AZD ... 等等这里的挑战是在主文件夹下有超过一百个这样的父文件夹,并且都有不同的名称。父文件夹中的子文件夹也有不同的名称。
我尝试使用 Get-ChildItem 来解决这个问题,然后使用“ForEach”尝试将子项(即文件夹)分配为变量,然后执行另一个 Get-ChildItem 递归并将所有内容移动到父项,但我'无处可去,如果有任何动作,它似乎是指回 C:\Windows\ 文件夹。
注意[对不起,更正Not*]字面代码,但方法,我正在考虑:
$master = "\\data\Master"
gci $master | foreach {
$parent = $_
gci ... | Move-Item -Destination $parent
}
【问题讨论】:
-
您已经有了正确的想法,尽管您的代码示例有点不完整(请始终发布minimal reproducible example)。您的问题是,当您需要
$parent作为文件夹的完整路径时,您设置了$parent = $_。将该行更改为$parent = $_.FullName,您的代码应该可以工作。
标签: powershell directory move parent relative-path