2009-12-23 24 views

Trả lời

128

Bạn có thể chèn tùy ý mã PowerShell script trong một chuỗi dụng dấu ngoặc kép bằng cách sử dụng một subexpression, ví dụ, $() như sau:

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

Và nếu bạn đang nhận được đường đi từ đâu đó khác - đã như là một chuỗi:

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

Và nếu con đường xảy ra là đến từ đầu ra của Get-ChildItem:

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

Argh. 'get-date -f yyyy-MM-dd' khiến tôi dừng lại một lúc trước khi nhận ra rằng nó không phải * toán tử' -f' * * nhưng là dạng ngắn cho tham số '-Format' * *. Nó trông khá ra khỏi vị trí, bằng cách nào đó :-) – Joey

+0

Cảm ơn Keith đó là một trợ giúp tuyệt vời –

+1

và nếu tôi muốn thời gian là tốt? –

9

Dưới đây là một số mã PowerShell sẽ hoạt động. Bạn có thể kết hợp hầu hết điều này thành các dòng ít hơn, nhưng tôi muốn giữ cho nó rõ ràng và dễ đọc.

[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

Cảm ơn Tom, Đó cũng là một trợ giúp tuyệt vời –

7

Tôi cần xuất nhật ký bảo mật của mình và muốn ngày và giờ trong Giờ quốc tế được phối hợp. Điều này chứng tỏ là một thách thức để tìm ra, nhưng rất đơn giản để thực hiện:

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

Mã ma thuật chỉ là một phần này:

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

Sử dụng:

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

Cảm ơn ở trên kịch bản. Một chút sửa đổi để thêm vào tệp kết thúc chính xác. Hãy thử điều này ...

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

Rename-Item -Path "C:\temp\MyFileName.txt" -NewName $filenameFormat 
Các vấn đề liên quan