通常我什至不会在没有一些框架的情况下发布,但我不知道从哪里开始。
我有一个包含数百个子文件夹的目录,这些子文件夹应该只有一层深,但有些是两层深:
我需要递归地遍历 MainDirectory,并且 if 有第二个子级别的文件,然后将这些文件向上移动一个级别(以便 SubfolderC1 的文件实际上放置在 SubfolderC 中)然后这些文件需要附加 SubFolderC1 的名称到文件的前面。
例如:
会变成:
我事先不知道子文件夹或文件名,它们可以命名为任何东西。
下面感觉像是一个开始
$source = "C:\MainDirectory"
$levels = Get-ChildItem $source -Directory -Recurse | ForEach-Object {$_.PSPath.Split('\').Count}
if ($levels -gt 3) {
}
但我不知道如何将结果用于任何有意义的事情。
编辑以添加进度。这似乎至少告诉我什么目录超过了阈值:
Get-ChildItem $source -Directory -Recurse | ForEach-Object {$path = $_.FullName; $levels = $_.PSPath.Split('\').Count;
if ($levels -gt 3){
Write-Output $path
}
}
现在我只需要使用 $path 来获取相应的子文件,将其向上移动一个目录,根据其以前的父文件夹重命名它。