重命名项目,转换日期格式

时间:2019-03-15 09:13:33

标签: powershell file-rename

我对文件名中的转换日期格式有疑问。 是否可以使用

重命名文件
Dir | Rename-Item -NewName { $_.Name }

要转换

dd.mm.yyyyy_string.txt

yyyyy.mm.dd_string.txt

或使用powershell以其他方式重命名目录中的文件

1 个答案:

答案 0 :(得分:1)

有几种方法可以完成任务,

这是一个依赖于给定结构的

dd.mm.yyyyy_string.txt

,并使用.split()方法将BaseName切成碎片,

对它们进行重新排序,并将它们与字符串格式运算符组合在一起。

Get-ChilItem ??.??.????_*.txt -File | 
  Rename-Item -NewName {("{0}.{1}.{2}_{3}" -f $_.BaseName.split('._',4)[2,1,0,3])+$_.extension} -WhatIf

即使上面的字符串也可以使用,而不仅仅是日期中的数字。
重新格式化样本输出(德语区域设置):

WhatIf: Ausführen des Vorgangs "Datei umbenennen" für das 
Ziel "Element: A:\dd.mm.yyyy_string.txt  
Ziel:          A:\yyyy.mm.dd_string.txt".

如果输出看起来正常,请删除结尾的-WhatIf

要更好地限制实际日期,请插入Where-Object

Get-ChilItem ??.??.????_*.txt -File | 
  Where-Object BaseName -match '^[0-3][0-9]\.[01][0-9]\.\d{4}_' |
    Rename-Item -NewName {("{0}.{1}.{2}_{3}" -f $_.BaseName.split('._',4)[2,1,0,3])+$_.extension} -WhatIf