使用PowerShell在文件名上添加时间戳


94

我在字符串中有一个路径,

"C:\temp\mybackup.zip"

我想在该脚本中插入时间戳,例如,

"C:\temp\mybackup 2009-12-23.zip"

在PowerShell中有一种简单的方法吗?

Answers:


195

您可以使用子表达式将任意的PowerShell脚本代码插入双引号字符串中,例如$(),如下所示:

"C:\temp\mybackup $(get-date -f yyyy-MM-dd).zip"

如果您从其他地方获取路径-已经作为字符串:

$dirName  = [io.path]::GetDirectoryName($path)
$filename = [io.path]::GetFileNameWithoutExtension($path)
$ext      = [io.path]::GetExtension($path)
$newPath  = "$dirName\$filename $(get-date -f yyyy-MM-dd)$ext"

并且如果路径恰好来自Get-ChildItem的输出:

Get-ChildItem *.zip | Foreach {
  "$($_.DirectoryName)\$($_.BaseName) $(get-date -f yyyy-MM-dd)$($_.extension)"}

5
get-date -f yyyy-MM-dd更让我意识到这是之前停止了一会儿没有-f 运营商,但对于短形式-Format 参数。它看起来有点不合时宜,:-)
Joey

谢谢Keith,这是一个很大的帮助
Chris Jones

1
如果我也想要时间?
约翰·德米特里


16

这是一些应该起作用的PowerShell代码。您可以将其中的大部分合并为更少的行,但我想保持其清晰易读。

[string]$filePath = "C:\tempFile.zip";

[string]$directory = [System.IO.Path]::GetDirectoryName($filePath);
[string]$strippedFileName = [System.IO.Path]::GetFileNameWithoutExtension($filePath);
[string]$extension = [System.IO.Path]::GetExtension($filePath);
[string]$newFileName = $strippedFileName + [DateTime]::Now.ToString("yyyyMMdd-HHmmss") + $extension;
[string]$newFilePath = [System.IO.Path]::Combine($directory, $newFileName);

Move-Item -LiteralPath $filePath -Destination $newFilePath;

谢谢汤姆,那也是一个很大的帮助
克里斯·琼斯

12

我需要导出我们的安全日志,并希望使用协调世界时的日期和时间。事实证明,这是一个挑战,但执行起来非常简单:

wevtutil export-log security c:\users\%username%\SECURITYEVENTLOG-%computername%-$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ")).evtx

魔术代码就是这一部分:

$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ"))

hh是12个小时的时间,没有tt它是没有用的。使用HH将为您提供24小时的时间。我建议hhmmsstt还是HHmmss
乔什·布朗

@JoshBrown我改hhHH上面了。我认为这就是大多数人想要的。
mwfearnley

4

感谢上面的脚本。进行一点点修改以添加正确结束的文件。试试这个 ...

$filenameFormat = "MyFileName" + " " + (Get-Date -Format "yyyy-MM-dd") **+ ".txt"**

Rename-Item -Path "C:\temp\MyFileName.txt" -NewName $filenameFormat

2

用:

$filenameFormat = "mybackup.zip" + " " + (Get-Date -Format "yyyy-MM-dd")
Rename-Item -Path "C:\temp\mybackup.zip" -NewName $filenameFormat

也许是$filenameFormat = "mybackup $(Get-Date -Format "yyyy-MM-dd").zip" 因为它与OP格式匹配
Mark Schultheiss '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.