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

时间:2016-08-28 08:15:34

标签: powershell powershell-v2.0

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

  1. 删除所有以“* flv.part”结尾的文件的文件扩展名(.part)。所以以“.flv.part”结尾的文件现在只能以“.flv”结尾。

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

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

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

    以下是我的想法:

    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
    

    任何想法?我正在使用带有PowerShell v2的Windows 7。

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

    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
    
    编辑:这纯粹是出于FYI目的......我已经对有用的帖子进行了投票,并将帖子标记为答案,但是SU说它不会反映我的投票直到我达到10或者什么名声。所以请等到那个时候让我的选票变得“可见”! :)

2 个答案:

答案 0 :(得分:3)

试试这个:

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

答案 1 :(得分:1)

请阅读Get-Date方法和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;)