目标文件名如下所示:specificLeaderString 2022-01-30.pdf specificLeaderString 2022-02-28.pdf specificLeaderString 2022-03-31.pdf etc我想要的名称是yyyyMMdd newSfx.pdf
- yyyyMMdd不带连字符的日期
我在cd到poweshell目录后使用的脚本:
dir | rename-item -NewName {$_.name -replace '(\d[4])-(\d\d)-(\d\d}).pdf','[$1][$2][$3] smithChq.pdf'}
目录中的文件名无更改
我也试过
dir | rename-item -NewName {$_.name -replace '(\d\d\d\d)-(\d\d)-(\d\d}).pdf','[$1][$2][$3] GGRbc.pdf'}
我希望所有选定的文件与日期后缀被重命名为日期没有连字符作为铅,并遗漏了原来的领先部分,并插入“SmithChq”前的文件后缀。pdf
顺便说一句,我正在使用Windows 10专业版的所有重要更新
4条答案
按热度按时间bmp9r5qi1#
解决此问题的最佳方法是使用user21534492发布的字符串替换方法,除非字符串的其余部分包含破折号。您的代码不起作用,因为破折号是Regex特殊字符,您需要使用十六进制值0x2d。以下代码经过测试
uqxowvwt2#
这里有一个方法:
或者你可以利用
[DateTime]
类型:cx6n0qe33#
使用
Get-ChildItem
(别名dir
),您可以添加Filter
和File
等参数,以帮助搜索要重命名的文件。因为过滤器不能使用正则表达式,在这种情况下,我建议将结果通过管道传递到
Where-Object
子句,以过滤以类似日期模式结尾的文件名。那么,这只是一个连接到
Rename-Item
的问题Get-ChildItem行位于方括号之间,以便在通过管道传输结果之前完成该部分。否则,它可能会选择已经重命名的文件(=浪费时间)
P.S.你的正则表达式使用
\d[4]
,但是.NET支持的正则表达式量词是花括号,所以应该是\d{4}
huwehgph4#
一个简单的替换就可以了。不幸的是,我不能帮助你修复RegExp,对我也不起作用。
希望有帮助!
编辑:对不起,完全忘记添加后缀。