首页 > 解决方案 > 在第一个分隔符后使用填充零重命名 PowerShell 文件

问题描述

我有一系列要重命名的文件。我想在第一次出现“-”分隔符后用填充零重命名文件,如下例所示:

旧名称: 101-1_File1_Project1-000-END.txt
所需的新名称: 101-001_File1_Project1-000-END.txt

我有几乎可以工作的 PowerShell 代码,除了它将填充应用于所有“-”实例而不仅仅是第一个实例。我已经尝试了一百万件事,但没有任何效果。请帮忙!

下面的PowerShell:

gci "C:\Path\Folder-with-Files" | ren -n {[regex]::replace($_.basename, '\-', {"$args".PadRight(3, '0')})+ $_.extension}

标签: regexpowershell

解决方案


您可以使用lookbehind:

gci "C:\Path\Folder-with-Files" | ren -n {[regex]::replace($_.basename, '(?<=^[^-]*)-', {"$args".PadRight(3, '0')})+ $_.extension}

(?<=^[^-]*)-则表达式将匹配-前面紧跟字符串 ( ^) 开头的 a,然后匹配除连字符以外的零个或多个字符。

请参阅.NET 正则表达式演示


推荐阅读