TimeStamp使用PowerShell的文件名

我有一个string的path,

“C:\ TEMP \ mybackup.zip”

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

“C:\ temp \ mybackup 2009-12-23.zip”

有没有一种简单的方法在PowerShell中做到这一点?

你可以使用一个子expression式在双引号string中插入任意的PowerShell脚本代码,例如$()就像这样:

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

如果你从别的地方得到了path – 已经是一个string:

 $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" 

如果path恰好来自Get-ChildItem的输出:

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

这里有一些应该工作的PowerShell代码。 你可以将其中的大部分组合成更less的行,但我想保持清晰和可读性。

 [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; 

我需要导出我们的安全日志,并要求世界协调时间的date和时间。 这被certificate是一个挑战,但很容易执行:

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

神奇的代码就是这个部分:

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

使用:

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