Bir dizede bir yolum var
"C:\temp\mybackup.zip"
Bu komut dosyasına bir zaman damgası eklemek istiyorum, örneğin,
"C:\temp\mybackup 2009-12-23.zip"
Bunu PowerShell'de yapmanın kolay bir yolu var mı?
Bir dizede bir yolum var
"C:\temp\mybackup.zip"
Bu komut dosyasına bir zaman damgası eklemek istiyorum, örneğin,
"C:\temp\mybackup 2009-12-23.zip"
Bunu PowerShell'de yapmanın kolay bir yolu var mı?
Yanıtlar:
Bir alt ifade kullanarak, örneğin $ () gibi, çift tırnaklı bir dizeye rastgele PowerShell komut dosyası kodu ekleyebilirsiniz:
"C:\temp\mybackup $(get-date -f yyyy-MM-dd).zip"
Ve yolu başka bir yerden alıyorsanız - zaten bir dize olarak:
$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"
Yol Get-ChildItem'in çıktısından geliyorsa :
Get-ChildItem *.zip | Foreach {
"$($_.DirectoryName)\$($_.BaseName) $(get-date -f yyyy-MM-dd)$($_.extension)"}
İşte çalışması gereken bazı PowerShell kodu. Bunların çoğunu daha az satırda birleştirebilirsiniz, ancak ben onu açık ve okunaklı tutmak istedim.
[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;
Güvenlik günlüğümüzü dışa aktarmam gerekiyordu ve tarih ve saati Koordineli Evrensel Saat olarak istedim. Bu, çözülmesi zor, ancak uygulaması çok basitti:
wevtutil export-log security c:\users\%username%\SECURITYEVENTLOG-%computername%-$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ")).evtx
Sihirli kod sadece bu kısımdır:
$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ"))
hh
12 saattir, onsuz tt
kullanışlı değildir. Kullanmak HH
size 24 saat süre verecektir. Ya hhmmsstt
da öneririmHHmmss
hh
için HH
yukarıda. Sanırım çoğu insan bunu isteyecek.
Yukarıdaki komut dosyası için teşekkürler. Doğru şekilde biten dosyaya eklenecek küçük bir değişiklik. Bunu dene ...
$filenameFormat = "MyFileName" + " " + (Get-Date -Format "yyyy-MM-dd") **+ ".txt"**
Rename-Item -Path "C:\temp\MyFileName.txt" -NewName $filenameFormat
Kullanım:
$filenameFormat = "mybackup.zip" + " " + (Get-Date -Format "yyyy-MM-dd")
Rename-Item -Path "C:\temp\mybackup.zip" -NewName $filenameFormat
$filenameFormat = "mybackup $(Get-Date -Format "yyyy-MM-dd").zip"
o OP formatını maçları beri
get-date -f yyyy-MM-dd
Beni bu kadar fark önce bir an için durdurmak yapılan değil-f
operatör ama için kısa form-Format
parametresi . Oldukça yersiz görünüyordu :-)