长名称文件上的PowerShell重命名项警告删除
我尝试使用PwerShell rename-Item cmdlet重命名文件。代码如下长名称文件上的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告诉我长路径或文件名;这与我的过程无
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
仅更改名称。否则,请按照建议使用移动项。