【发布时间】:2017-03-08 16:40:35
【问题描述】:
我有一些 powershell 代码,旨在递归地从文件名中取出特定字符。这很好用,除非取出字符会导致 2 个文件与同一文件夹中的名称匹配。
我在这里找到了 Powershell PowerShell script to remove characters from files and folders,但它并没有解决我遇到的问题。
$characters = "$#"
$regex = "[$([regex]::Escape($characters))]"
$filesandfolders = Get-ChildItem -recurse "D:\projects\filenameCleaner\TEST" | Where-Object {$_.name -match $regex}
$filesandfolders | Where-Object {!$_.PsIscontainer} | foreach {
$New=$_.name -Replace $regex
Rename-Item -path $_.Fullname -newname $New -passthru
}
$filesandfolders | Where-Object {$_.PsIscontainer} | foreach {
$New=$_.name -Replace $regex
Rename-Item -path $_.Fullname -newname $New -passthru
}
我还不是很精通 Powershell,希望能得到一些帮助。我只想要脚本,如果它发现重复,它应该在最后添加 (1) 或 (2) 等,具体取决于有多少。
请不要只给我一个答案,请解释一下,以便我了解正在发生的事情
【问题讨论】:
标签: powershell recursion