2009-12-23 12 views

Odpowiedz

128

można wstawić dowolny kod skryptu PowerShell w podwójnym cudzysłowie za pomocą podwyrażenie, na przykład, $() tak:

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

A jeśli są coraz ścieżkę skądś inny - już jako wyrażenie:

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

a jeśli ścieżka dzieje się pochodzić z wyjścia Get-ChildItem:

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

Argh. 'get-date -f rrrr-MM-dd' sprawił, że zatrzymałem się na chwilę, zanim zdałem sobie sprawę, że to * nie * jest operatorem' -f' *, ale krótką formą parametru '-Format' *. Wyglądało to raczej nie na miejscu, jakoś :-) – Joey

+0

Dzięki Keith, to była wielka pomoc –

+1

i czy ja też chcę mieć czas? –

9

Oto kod PowerShell, który powinien działać. Możesz połączyć większość z nich w mniejszą liczbę wierszy, ale chciałem, aby było czytelne i czytelne.

[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

Dzięki Tom, to też była świetna pomoc –

7

Potrzebowałem wyeksportować nasz dziennik zabezpieczeń i chciałbym, aby data i czas były skoordynowane w czasie uniwersalnym. To okazało się być wyzwaniem, aby dowiedzieć się, ale tak proste do wykonania:

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

Magia kod jest tylko ta część:

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

Zastosowanie:

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

Dzięki za powyższy skrypt. Jedna mała modyfikacja, aby dodać plik kończący się poprawnie. Wypróbuj to ...

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

Rename-Item -Path "C:\temp\MyFileName.txt" -NewName $filenameFormat 
Powiązane problemy