Powershell替换文件名
我使用与重命名相同的逻辑,但很难使其正常工作,这些失败是由于命名约定造成的吗 示例文件: filename.xxxx.xx_xxx(2).jpg 预期成果: filename.xxxx.xx_xxx.jpg 以下是我所拥有的:Powershell替换文件名,powershell,Powershell,我使用与重命名相同的逻辑,但很难使其正常工作,这些失败是由于命名约定造成的吗 示例文件: filename.xxxx.xx_xxx(2).jpg 预期成果: filename.xxxx.xx_xxx.jpg 以下是我所拥有的: $toRename = Get-ChildItem ".\files" foreach($x in $toRename){ $x | Rename-Item -NewName { $_.Name -replace " (2
$toRename = Get-ChildItem ".\files"
foreach($x in $toRename){
$x | Rename-Item -NewName { $_.Name -replace " (2)", "" }
}
我添加了一个-WhatIf
,文件名根本没有改变。我肯定错过了一些明显的东西,但我想不出来
谢谢大家您需要转义括号,它们是一个特殊字符
foreach($x in $toRename)
{
Rename-Item -Path $x.FullName -NewName ($x.Name -replace "\s\(2\)")
}
您需要对括号进行转义,它们是一个特殊字符
foreach($x in $toRename)
{
Rename-Item -Path $x.FullName -NewName ($x.Name -replace "\s\(2\)")
}
您不能在foreach中使用$\uu,只能使用$x
您不能在foreach中使用$\uu,只能使用$x
这是对的,
-replace
对第一个参数使用正则表达式。有关更多信息,请参阅。谢谢,我想这可能与括号有关。。。还有ty@JeffZeitlin用于材料。这是正确的-replace
对第一个参数使用正则表达式。有关更多信息,请参阅。谢谢,我想这可能与括号有关。。。同样感谢ty@JeffZeitlin的材料。感谢这一点,我将使用第二个答案tho,因为它解释了为什么我的初始脚本不起作用(特殊角色)。感谢这一点,我将使用第二个答案tho,因为它解释了为什么我的初始脚本不起作用(特殊角色)。
Get-ChildItem ".\files" | ForEach-Object { Rename-Item -Path $_ -NewName $_.Name.Replace(" (2)", "") }