我从网站上下载了很多图标,其下载结构为:pack/svg/icons
,但是这种冗余结构对我的项目而言并不理想。我只想将图标直接放在pack目录下。所以现在是这样:
Categorized Icons
└ RandomCat1
└ svg
└ icon1.svg
└ icon2.svg
└ RandomCat2
└ svg
└ moreicons.svg
└ alldifferentnames.svg
以及我想要的方式:
Categorized Icons
└ RandomCat
└ icon1.svg
└ icon2.svg
问题是我不知道RandomCat的名称,并且我不想为每个可能的文件夹运行此命令。我需要类似“将所有图标移至../,删除/ svg /”之类的东西。
答案 0 :(得分:3)
首先枚举基本目录下所有名为“ svg”的目录。返回的DirectoryInfo
对象可用于访问文件夹内容。它们还具有引用其父文件夹对象的属性Parent
。将后者用作移动前者的目标。然后删除源文件夹。
Get-ChildItem 'C:\folder' -Filter 'svg' -Directory -Recurse -Force | ForEach-Object {
Move-Item "$($_.FullName)\*.svg" -Destination $_.Parent.FullName
Remove-Item $_.FullName -Force
}
请注意,在v3之前的PowerShell版本Get-ChildItem
中没有参数-Directory
。如果您只能使用过时的版本,则需要使用类似的方法枚举“ svg”文件夹:
Get-ChildItem 'C:\folder' -Filter 'svg' -Recurse -Force | Where-Object {
$_.PSIsContainer
} | ...