PowerShell重命名项

时间:2017-06-12 20:29:45

标签: powershell

我尝试使用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总是告诉我长路径或文件名。我知道文件名有很长的名字。但这是非常必要的保持新名称。

如何除此错误外?

1 个答案:

答案 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