【发布时间】:2017-08-30 17:19:50
【问题描述】:
我正在清理一个目录,但我的 PowerShell 代码有问题。专门在特定位置查找特定字符并将其删除。
这是我的目录当前的样子...
_AB_.CDF
_AB__.CDF
_AB__0.CDF
_AB__1.CDF
_GH_.IJK
_GH__.IJK
_GH__0.IJK
_GH__1.IJK
L_M_N_O_.PQR
L_M_N_O__.PQR
L_M_N_O__0.PQR
我想要做的是删除文件名开头的所有下划线和最后的数字(如果存在)的任何下划线。所以它看起来像这样......
AB.CDF
GH.IJK
L_M_N_O.PQR
这是我目前想出的代码...
Set-Location C:\somedir
Get-ChildItem -Recurse | ForEach-Object {
$NewName = ($_.BaseName -Replace "^_|_|\d+$") + $_.Extension
$Destination = Join-Path -Path $_.Directory.FullName -ChildPath $NewName
Move-Item -LiteralPath $_.FullName -Destination $Destination -Force
}
它几乎可以解决问题。但是,它也会删除所有下划线实例,让我留下没有任何我想保留的下划线的文件。像这样……
LMNO.PQR
我确信这个问题可能已在另一篇文章中得到解答,但最后几个小时的搜索让我筋疲力尽。感谢您的帮助!
【问题讨论】: