我试图在我的项目文件夹中的所有.ascx文件前加一个下划线。我写的Powershell是:
Get-ChildItem -Filter '*.ascx' -File -Recurse | Rename-Item -NewName {"_$($_.Name)"}
对于大多数文件,此操作已达到预期目的,但对于某些文件,它已在文件名前加上大量下划线。例如: MyDirectory / MySubDirectory1 / ____________________________________________________________________________________________________________________________________________________________________________ Filename.ascx
我不明白为什么会这样。我最初使用--whatif参数运行脚本,使用该参数的结果似乎是正确的。
我将注意力集中在终端上,我得到了许多以下例外:
Rename-Item : Could not find a part of the path.
At line:1 char:47
+ ... lter '*.ascx' -File -Recurse|Rename-Item -NewName {"_$($_.Name)"}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (C:\Users\MyUser...pportPanel.ascx:String) [Rename-Item], DirectoryNotFoundException
+ FullyQualifiedErrorId : RenameItemIOError,Microsoft.PowerShell.Commands.RenameItemCommand
答案 0 :(得分:0)
尝试一下:
$files = Get-ChildItem -Path 'C:\Users\Muppet\Desktop\test' -Filter '*.ascx' -File -Recurse
ForEach ($file in $files)
{
$newname = "_" + $file.Name
Rename-Item -Path $file -NewName $newname
}
答案 1 :(得分:0)
我不知道如何创建多个下划线,这种情况不应出现在以下情况下:
Get-ChildItem -Filter '*.ascx' -File -Recurse|Rename-Item -NewName {"_{0}" -f $_.Name}
要修复下划线,请使用:
Get-ChildItem -Filter '__*.ascx' -File -Recurse|Rename-Item -NewName {$_.Name -replace '(?<=^_)_+'}