我使用简单的脚本批量重命名了PowerShell中的.las文件:
cd "C:\Users\User\desktop\Folder"
Dir | Rename-Item -NewName {$_.name-replace "-", "" }
Dir | Rename-Item -NewName {$_.name-replace "_", "" }
Dir | Rename-Item -NewName {$_.BaseName+ "0.las"}
这一直很好用,但我需要修改它以考虑不同的命名约定。
文件以这种格式开头:123_45-67-890-12W_ 0 并转换为123456789012W00.las
偶尔W之后的数字将不为零,我需要将其作为最后一位数字,例如。 123_45-67-890-12W_2需要转到123456789012 W02
我不确定如何使用if语句并选择PowerShell格式的特定数字,这就是我如何处理这个问题。有没有人对如何解决这个问题有一些想法?
由于
答案 0 :(得分:1)
您可以使用正则表达式来实现此目的:
Get-ChildItem "C:\Users\User\desktop\Folder" | ForEach-Object {
#capture everything we need with regex
$newName = $_.Name -replace "(\d{3})_(\d{2})-(\d{2})-(\d{3})-(\d{2})(\w)_(\d)",'$1$2$3$4$5$6$7'
#insert 0 before last digit and append file extension
$newName = $newName.Insert(($newName.Length - 1), "0") + ".las"
#rename file
Rename-Item $_.FullName -NewName $newName
}
答案 1 :(得分:0)
您可以使用substring方法获取基本名称中除最后一个字符之外的所有字符,然后连接零,然后再次使用substring获取基本名称的最后一个字符,然后使用.las扩展名结束:< / p>
Dir | Rename-Item -NewName {($_.BaseName).substring(0,$_.BaseName.length - 1) + "0" + ($_.BaseName).substring($_.BaseName.length -1,1) + ".las"}
# ^^^^This gets everything but the last charcter^^^ ^^^^^^^^^^This gets the last character^^^^^^^^^^