我必须更改Windows计算机上的很多文件,我将使用Powershell来完成它。
文件名类似于name_name_DDMMYYYY_XXXXXX.bmp
我想将它排序为name_name_YYYYMMDD_XXXXXX.bmp
我在Powershell中完全不成熟,只是开始将特殊字符替换为空。所以所有的帮助都很棒!
答案 0 :(得分:1)
您要匹配和重新排序的8位数字位于下划线之间,因此您可以执行以下操作:
$pattern = '_(\d{2})(\d{2})(\d{4})_'
'John_Doe_03062009_123456.bmp' -replace $pattern, '_${3}${2}${1}_'
模式匹配3个捕获组中下划线之间的8位数,以便您可以通过反向引用($1
,$2
,$3
)重新排序捕获的子串。
有关-replace
运营商的进一步帮助,请参阅here。有关正则表达式语法的进一步帮助,请参阅here。 PowerShell和普通.Net之间存在一些细微差别,例如反向引用语法(\1
vs $1
),但大多数都可以直接应用。