0

我尝试使用 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'}

但是,PowerShell 告诉我长路径或文件名;这与我的过程无关。但强烈需要保留新的长名称。

如何排除此错误?

4

1 回答 1

3

是否可以向您询问代码示例?以下带注释的代码片段(保守方法)可能会有所帮助:

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 right place to check target filename length:
    $targetLength = 1 + $_.DirectoryName.Length + $NewName.Length

    Rename-Item -Path $_.FullName -NewName $NewName
  }

阅读重命名项目参考和正则表达式语言 - 快速参考

于 2017-06-13T10:27:26.130 回答