【发布时间】:2018-07-30 23:57:39
【问题描述】:
我正在努力编写执行以下操作的 Powershell 命令。假设一个文件夹包含一堆随机名称与正则表达式模式匹配的文件。我想捕获与模式匹配的部分并将文件重命名为仅该部分。
例如如果模式为\w\d+\w+\d+(或类似),“asdjlk-c12aa13-.pdf”应变为“c12aa13.pdf”。
我目前的想法是这样的:
Get-ChildItem | Rename-Item -NewName { $_.Name -match $pattern ... } -WhatIf
其中... 需要替换为将代码块(即新名称)的“值”设置为匹配组的内容。 IE。我不知道如何在-match 命令之后直接访问$matched。
另外,我想知道是否可以使用-match 进行惰性匹配,.*? 似乎不起作用。
【问题讨论】:
-
对于正则表达式,您可以在一个组中捕获您想要的内容并在替换中使用这些组
example -
正是我的想法,是的。 powershell 带来了更多的问题:/
-
嘿...与正则表达式匹配的随机名称。我不肯定你知道随机意味着什么。 :)
-
@EBGreen 可能选词不当,当然。随机的意思是文件名中有一个随机部分不受模式控制,模式可以是任何东西,构成模式的符号可以是随机的。
标签: regex powershell