如果文件不是以日期开头,则在powershell中将日期预先添加到文件名

时间:2017-02-03 15:38:04

标签: date powershell conditional-statements prepend

使用PowerShell,我想预先设置许多文件的创建日期,但前提是文件名尚未以日期开头。对于其他文件,代码应该跳过它们。

我已成功使用以下命令预先添加日期,但我想以不以任何日期格式(或者可能是任何数字)开头的文件名为条件。

Dir | Rename-Item -NewName {(Get-Date $_.CreationTime -Format "yyyy-MM-dd ")+ $_.BaseName+$_.Extension}

1 个答案:

答案 0 :(得分:2)

您可以使用正则表达式匹配模式。我对正则表达式不是最好的,但在其他地方找到以下正则表达式来匹配您指定格式的日期。我刚刚接受了您现有的代码并插入了Where-Object来过滤掉已经匹配该模式的文件。

    $regex = [regex] '^\d{4}-\d{2}-\d{2}'
    Get-ChildItem | Where-Object {!($_.Name -match $regex)} | Rename-Item -NewName {(Get-Date $_.CreationTime -Format "yyyy-MM-dd ")+ $_.BaseName+$_.Extension}