【发布时间】:2020-11-07 23:03:02
【问题描述】:
所以我有一个 jpg 格式的文件夹中的文件列表,如下所示:
"1.George ABCD.jpg"
"2.George ABCD.jpg"
"3.Mead ABCD.jpg"
所以我想做的是重命名它们,使前缀变成这样的后缀:
"George ABCD 1.jpg"
"George ABCD 2.jpg"
"Mead ABCD 2.jpg"
我想让它通过子文件夹递归地工作。
我有一个我尝试过的代码段在这里工作:
ls -Recurse |? BaseName -match '^(\d+\.)([^0-9].*)$' |ren -new {"{0}{1}{2}" -f $matches[2],' ', $matches[1].substring(0,1)+ $_.extension}
cmd /c pause
现在的问题是我的一段代码目前不适用于两位数名称,例如:
"11.George ABCD.jpg"
它的作用是吐出来
"George ABCD 1.jpg"
这不是我想要的,我知道这与正则表达式 d+ 有关,它是一位或多位数字,但我不确定我应该使用什么来使其对一位或多位数字正常工作.
也就是说,我希望“11.George ABCD.jpg”的输出为“George ABCD 11.jpg”。
有什么办法可以解决这个问题吗?
【问题讨论】:
-
一种非正则表达式的方法是拆分点上的
.BaseName,修剪项目,使用任何所需的分隔符以所需的顺序连接它们,最后从它们中创建一个文件名以供使用打电话给Rename-Item。 [咧嘴]
标签: regex powershell rename file-rename batch-rename