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

Powershell 重命名项目,转换日期格式,powershell,file-rename,Powershell,File Rename,我对文件名中的转换日期格式有问题。 有没有一种方法可以使用重命名文件 Dir | Rename-Item -NewName { $_.Name } 转化 dd.mm.yyyyy_string.txt 到 或者使用powershell以另一种方式重命名目录中的文件有几种方法可以完成您的任务 这是一个依赖于给定结构的 dd.mm.yyyyy_string.txt 并使用.split() 对它们重新排序,并将它们与字符串格式运算符组合 Get-ChilItem ??.??.????_*.txt

我对文件名中的转换日期格式有问题。 有没有一种方法可以使用重命名文件

Dir | Rename-Item -NewName { $_.Name }
转化

dd.mm.yyyyy_string.txt


或者使用powershell以另一种方式重命名目录中的文件有几种方法可以完成您的任务

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

dd.mm.yyyyy_string.txt
并使用
.split()

对它们重新排序,并将它们与字符串格式运算符组合

Get-ChilItem ??.??.????_*.txt -File | 
  Rename-Item -NewName {("{0}.{1}.{2}_{3}" -f $_.BaseName.split('._',4)[2,1,0,3])+$_.extension} -WhatIf
这甚至适用于上述字符串,而不仅仅是日期中的数字。
重新格式化的样本输出(德语区域设置):

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

为了更好地限制实际日期,请在对象

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

假设起始日期中的年份只有4个位置,我相应地编辑了您的问题。
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".
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