【问题标题】:Insert timestamp into filename when exporting into .csv导出到 .csv 时在文件名中插入时间戳
【发布时间】:2017-10-31 15:41:36
【问题描述】:

我正在尝试将 时间戳插入 PowerShell 脚本生成的输出文件的文件名

因此,它使用实际时间戳(输出文件的修改时间)命名输出文件,而不是 filelist.csv,例如 YYYYMMDD_HHMMSS_filelist.csv

Get-childitem -recurse -file | select-object @{n="Hash";e={get-filehash -algorithm MD5 -path $_.FullName | Select-object -expandproperty Hash}},lastwritetime,length,fullname | export-csv filelist.csv -notypeinformation

关于上面一行中缺少的用于为输出文件添加时间戳的代码有什么建议吗?

【问题讨论】:

    标签: windows file powershell timestamp metadata


    【解决方案1】:

    变化:

    export-csv filelist.csv -notypeinformation
    

    收件人:

    Export-Csv "$((Get-Date).ToString("yyyyMMdd_HHmmss"))_filelist.csv" -NoTypeInformation
    

    编辑 - .ToString()-UFormat,一般来说

    当使用.ToString()-Format/-UFormat 时,您将传递一个 DateTime 对象并返回一个格式化的字符串。在这两种情况下,您都必须指定要使用的字符串的格式。指定此格式的方式不同。

    查看可与ToString()/-Format 一起使用的this list of .NET format strings。注意例如如何MM 是 01-12 月,M 是 1-12 月,mm 是 00-59 分钟。

    -UFormat is documented to use UNIX formatting。我对此一点也不熟悉,但注释部分会详细介绍。你可以在这里看到%m 是月份,而%M

    【讨论】:

    • 谢谢!使用"$((Get-Date).ToString("yyyyMMdd_HHmmss"))-Path "$(Get-Date -UFormat '%Y%m%d_%H%M%S') 有什么好处?通常,我在不同的驱动器、机器、时区、驱动器等上运行它。
    • @user3026965 更多括号?你甚至可以做(Get-Date .. + 'filelist.csv')
    • @user3026965 优点:我不知道。想象一下,一个会(可以忽略不计?)比另一个更优化。区别:是的,因为它们使用不同的格式字符串 - 请参阅编辑。
    【解决方案2】:

    在您的文件名中,执行以下操作:

    Export-Csv -Path "$(Get-Date -UFormat '%Y%m%d_%H%M%S')_filelist.csv" -NoTypeInformation
    

    【讨论】:

    • 谢谢(两者似乎都有效,所以我接受了第一个答案。)
    • @user3026965(这是第一个答案)
    • 那时我很困惑。我将它排序为“最旧的”,另一个排在最前面。但我看到你的“分钟前”。
    猜你喜欢
    • 1970-01-01
    • 2015-06-06
    • 2018-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    相关资源
    最近更新 更多