将 (Get-Date) 转换为文本,以便在 Powershell 中将其用于文件名

Convert (Get-Date) into Text, to use it for Filenames in Powershell

大家好,我乐于助人的朋友们,

我有一个问题(又)...是的。

我想设置一个修复日期(在我的脚本开头)并在不同的文件夹和 csv 文件名中使用这个修复日期。

$Date = '{0:yyyyMMdd_hh:mm:ss}' -f (Get-Date)
Write-Host "The script was started $Date"

=CODE=

#Version 1
$fileOut = Join-Path -Path $path -ChildPath ("$Date.csv")
$csv| Export-Csv -Path $fileOut -Delimiter ";" -NoTypeInformation

#Result: No csv-file is written

让我生气的部分是,如果我说 $date = "TEXT" 它有效...

$Date = "TEXT"
Write-Host "The script was started $Date"

$fileOut = Join-Path -Path $tsvEingang -ChildPath ("$Date.csv")
$MosaicSummary | Export-Csv -Path $fileOut -Delimiter "`t" -NoTypeInformation

#Result: The writtens csv-file-name is TEXT.csv

那么如何将日期转换为可用的文本?!

您通常做的是从日期时间中删除所有不是数字的内容。

$Date = '{0:yyyyMMddhhmmss}' -f (Get-Date)

那会给你这样的东西:

20200806024229

这是有效的 filename/foldername。不允许在文件名中使用 :(冒号)。

不过,破折号在文件名中是完全可以接受的,所以如果您需要某种分隔符,请尝试这样的操作:

    $Date = '{0:yyyy-MM-dd-hhmmss}' -f (Get-Date)