我有遵循以下模式的文件夹:
C:\
└───root
├───V16
│ ├───1
│ │ A.sql
│ │ B.sql
│ │
│ ├───2
│ │ C.sql
│ │
│ └───4
│ E.sql
│
└───V17
└───1
D.sql
我的目标是获得这种模式:
C:\root\V16-1\A.sql
C:\root\V16-1\B.sql
C:\root\V16-2\C.sql
C:\root\V17-1\D.sql
C:\root\V17-4\E.sql
我完全知道如何在C#中做到这一点,但不幸的是,我真的是Powershell中的新手
答案 0 :(得分:1)
尝试
$DirToRemove=@()
Get-ChildItem "C:\temp\root\*\*" -directory | %{
move-Item $_.FullName ($_.Parent.FullName + '-' + $_.Name)
$DirToRemove+=$_.Parent.FullName
}
$DirToRemove | select -Unique | Remove-Item
答案 1 :(得分:0)
移动文件夹时,*。sql文件无关。
Get-ChildItem C:\root\*\* -Directory |
Move-Item -dest {'{0}\{1}-{2}' -f $_.PSParentPath.replace('\'+$_.Parent,''),$_.Parent,$_.Name} -WhatIf
如果输出看起来正常,请删除结尾的-WhatIf
对结果树进行采样:
C:\
└───root
├───V16
├───V16-1
│ A.sql
│ B.sql
│
├───V16-2
│ C.sql
│
├───V16-4
│ E.sql
│
├───V17
└───V17-1
D.sql