我有一系列文件都以类似的方式命名:
PRT14_WD_14220000_1.jpg
我需要在最后一个下划线之后和数字之前添加两个零,因此看起来像PRT14_WD_14220000_001.jpg
我尝试过]
(dir) | rename-Item -new { $_.name -replace '*_*_*_','*_*_*_00' }
感谢任何帮助。
.*
。括号进行分组,以便以后使用美元符号编号进行引用。dir *.jpg | rename-Item -new { $_.name -replace '(.*)_(.*)_(.*)_','$1_$2_$3_00' } -whatif
What if: Performing the operation "Rename File" on target "Item: C:\users\admin\foo\PRT14_WD_14220000_1.jpg Destination: C:\users\admin\foo\PRT14_WD_14220000_001.jpg".
.BaseName
的最后部分将始终需要添加两个零。它做什么...fileinfo
获得的Get-Item/Get-ChildItem
对象将其替换为适当的cmdlet。 [.BaseName
作为分割目标,将_
分割为多个部分$NewBaseName
.FullName
并将原始BaseName替换为$newBaseName
咧嘴]
这是代码...# fake getting a file info object
# in real life, use Get-Item or Get-ChildItem
$FileInfo = [System.IO.FileInfo]'PRT14_WD_14220000_1.jpg'
$BNParts = $FileInfo.BaseName.Split('_')
$BNParts[-1] = '00{0}' -f $BNParts[-1]
$NewBasename = $BNParts -join '_'
$NewFileName = $FileInfo.FullName.Replace($FileInfo.BaseName, $NewBaseName)
$NewFileName
输出= D:\Data\Scripts\PRT14_WD_14220000_001.jpg