2009-12-23 106 views
64

我有一个字符串的路径文件名,时间戳使用PowerShell的

“C:\ TEMP \ mybackup.zip”

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

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

是否有一种简单的方法可以在PowerShell中执行此操作?

回答

128

您可以通过使用一个子表达式像这样插入一个双引号字符串的任意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)"} 
+4

阿格。 'get-date -f yyyy-MM-dd'让我在意识到它不是'-f' *运算符*之前停了一会儿,而是'-Format' *参数的简写形式*。它看起来相当不合适,不知何故:-) – Joey 2009-12-24 00:11:07

+0

谢谢基思,这是一个很大的帮助 – 2009-12-24 11:43:34

+1

,如果我想要的时间以及? – 2016-04-11 05:36:47

9

下面是一些应该工作的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; 
+0

谢谢汤姆,这也是一个很大的帮助 – 2009-12-24 11:44:04

7

我需要导出我们的安全日志,并希望在协调世界时的日期和时间。事实证明,这是一个挑战,要弄清楚,但如此简单的执行:

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

神奇的代码仅仅是这一部分:

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

用途:

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

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

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

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