2009-12-23 84 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