regex - 在第一个分隔符后使用填充零重命名 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}
解决方案
您可以使用lookbehind:
gci "C:\Path\Folder-with-Files" | ren -n {[regex]::replace($_.basename, '(?<=^[^-]*)-', {"$args".PadRight(3, '0')})+ $_.extension}
正(?<=^[^-]*)-
则表达式将匹配-
前面紧跟字符串 ( ^
) 开头的 a,然后匹配除连字符以外的零个或多个字符。
请参阅.NET 正则表达式演示。
推荐阅读
- c - 在erlang中创建日历程序
- openmdao - 如何为自动连接的输出设置别名?
- bigdata - 分布式系统的代理键
- python - 创建 Bacnet 客户端变量自动化
- python - 加载图像的最佳方法pygame
- reactjs - 生产服务器中 reactjs Web 应用程序的最佳方式是什么
- spring-boot - Spring Boot 中 Exchange (Camel) 的等价对象是什么?
- sonos - 移动设备上 Spotify 音乐服务中使用的未知(未记录)SONOS 显示类型
- react-native - React-Native 视频不播放音频
- oracle - 选择子句中的 Oracle `partition_by`,它是否永久创建这些分区?