我尝试使用PwerShell Rename-Item cmdlet重命名文件。代码
Get-ChildItem -recurse * | ?{!$_.PsIsContainer} | Rename-Item -NewName {$_.FullName -Replace '.abcd@email.com','.abcd@email_A.com.abcd@email_B.com.abcd@email_E.com'}
但是,PwerShel总是告诉我长路径或文件名。我知道文件名有很长的名字。但这是非常必要的保持新名称。
如何除此错误外?
答案 0 :(得分:1)
是否可以询问代码示例?以下评论代码段(保守方法)可以提供帮助:
Get-ChildItem -recurse * | Where-Object {!$_.PsIsContainer} |
ForEach-Object {
### in regular expression: ↓ ↓ escape dots
$NewName = $_.Name -Replace '\.abcd@email\.com',
'.abcd@email_A.com.abcd@email_B.com.abcd@email_E.com'
### here is rigt place to check target filename length:
$targetLength = 1 + $_.DirectoryName.Length + $NewName.Length
Rename-Item -Path $_.FullName -NewName $NewName
}
阅读Rename-Item参考和Regular Expression Language - Quick Reference。