Powershell:将昨天的日期放在文件名中

Powershell: put yesterday's date in a filename

我正在尝试使用 powershell 脚本执行以下三个步骤:

  1. 删除所有以模式“*flv.part”结尾的文件的文件扩展名 (.part)。因此以“.flv.part”结尾的文件现在将以“.flv”结尾。

  2. 在这些 FLV 文件的文件名开头添加昨天的日期(以 YYYYMMDD 格式)。

  3. 将这些 flv 文件移动到其他目录。

我想出了第一步和最后一步。但我无法弄清楚中间步骤(第二步,我将昨天的日期添加到文件名的开头)。

这是我的发现:

cd C:\Users\appa\Desktop
Dir | Rename-Item -NewName { $_.name -replace ".part","" }
---------this step needs to add yesterday's date (in YYYYMMDD format) to filename--------
move-item -path .\*.flv -destination d:\D:\VideoCaptures

有什么想法吗?我正在使用 windows 7 和 powershell v2。

编辑:感谢大家的贡献!我为此任务制作了以下脚本:

cd C:\Users\appa\Desktop
$dt_str = (get-date).AddDays(-1).tostring("yyyyMMdd")
Dir *.part | Rename-Item -NewName { $dt_str + "-" + $_.name -replace ".part","" }
move-item -path .\*.flv -destination D:\VideoCapture

编辑:这纯粹是为了仅供参考...我已经对有帮助的 post 投了赞成票,并将 post 标记为答案,但 SU 表示不会在我达到 10 或其他声誉之前,不要反映我的投票。所以请等到那个时候我的票数变成"visible"! :)

试试这个:

$date = Get-Date
$date = $date.AddDays(-1)
$dateStr = $date.ToString("yyyyMMdd")
Dir | Rename-Item -NewName {  $dateStr  + $_.name -replace ".flv.part",".flv"}

请阅读 Get-Date method and Formatting Dates

例如当前日期:

$dt = Get-Date -format 'yyyyMMdd'

或昨天

$dt = (Get-Date).AddDays(-1).ToString('yyyyMMdd')


您可以使用的其他功能:


也许是这样的:

$dt = (Get-Date).AddDays(-1).ToString('yyyyMMdd')

Get-Item -Path "C:\Windows\*.flv.part" | Foreach-Object -Process { 

    $newpath = Join-Path -Path $_.DirectoryName -ChildPath "$dt-$($_.BaseName).flv" # in PowerShell "" it's a Magic String

    Move-Item -Path $newpath -Destination "??"
}


请注意 PowerShell 中的 PowerShell’s Type Conversion Magic ;)