Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
长名称文件上的PowerShell重命名项警告删除_Powershell_Rename Item Cmdlet - Fatal编程技术网

长名称文件上的PowerShell重命名项警告删除

长名称文件上的PowerShell重命名项警告删除,powershell,rename-item-cmdlet,Powershell,Rename Item Cmdlet,我尝试使用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告诉我长路径或文件名;这与我的过程无

我尝试使用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告诉我长路径或文件名;这与我的过程无关。但保留新的长名称是非常必要的


如何排除此错误?

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

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
  }

阅读参考资料和。

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

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
  }

阅读引用,并使用类似于
-NewName$($\全名-Replace')的内容。

-NewName
应为字符串(但
{}
表示脚本块)。abcd@email.com','.abcd@email_A.com.abcd@发电子邮件到B.com。abcd@email_E.com)Hi!谢谢你的回答。若我像你们提到的那个样做,我会收到一条错误消息:“重命名项:无法将参数绑定到参数‘NewName’,因为它为null。”@JosefZ请参阅“ScriptBlock参数”一节-将scriptblock作为未指定scriptblock类型的参数传递是有效的,并将对其进行动态计算。可能重复的-如果不是此问题的直接重复,则是许多“长路径错误”问题之一,此问题有一些链接。简短的回答是:没有简单的办法。回答很长:您可以调用较低级别的API、自定义模块,或者安装Windows 10最新版本并编辑注册表。重命名项目意味着它保留在同一个文件夹中,因此不要使用
$\u.FullName
而使用
$\u.Name
仅更改名称。否则,请按照建议使用移动项。
-NewName
应为字符串(但
{}
指示脚本块)使用类似于
-NewName$($的.FullName-Replace'的内容。abcd@email.com','.abcd@email_A.com.abcd@发电子邮件到B.com。abcd@email_E.com)
Hi!谢谢你的回答。若我像你们提到的那个样做,我会收到一条错误消息:“重命名项:无法将参数绑定到参数‘NewName’,因为它为null。”@JosefZ请参阅“ScriptBlock参数”一节-将scriptblock作为未指定scriptblock类型的参数传递是有效的,并将对其进行动态计算。可能重复的-如果不是此问题的直接重复,则是许多“长路径错误”问题之一,此问题有一些链接。简短的回答是:没有简单的办法。回答很长:您可以调用较低级别的API、自定义模块,或者安装Windows 10最新版本并编辑注册表。重命名项目意味着它保留在同一个文件夹中,因此不要使用
$\u.FullName
而使用
$\u.Name
仅更改名称。否则,请按照建议使用移动项。