Saya memiliki jalur dalam string,
"C:\temp\mybackup.zip"
Saya ingin memasukkan stempel waktu di skrip itu, misalnya,
"C:\temp\mybackup 2009-12-23.zip"
Apakah ada cara mudah untuk melakukan ini di PowerShell?
Saya memiliki jalur dalam string,
"C:\temp\mybackup.zip"
Saya ingin memasukkan stempel waktu di skrip itu, misalnya,
"C:\temp\mybackup 2009-12-23.zip"
Apakah ada cara mudah untuk melakukan ini di PowerShell?
Jawaban:
Anda dapat menyisipkan kode skrip PowerShell arbitrer dalam string kutip ganda menggunakan subekspresi, misalnya, $ () seperti:
"C:\temp\mybackup $(get-date -f yyyy-MM-dd).zip"
Dan jika Anda mendapatkan jalur dari tempat lain - sudah sebagai string:
$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"
Dan jika jalur tersebut kebetulan berasal dari output Get-ChildItem :
Get-ChildItem *.zip | Foreach {
"$($_.DirectoryName)\$($_.BaseName) $(get-date -f yyyy-MM-dd)$($_.extension)"}
Berikut beberapa kode PowerShell yang seharusnya berfungsi. Anda dapat menggabungkan sebagian besar ini menjadi lebih sedikit baris, tetapi saya ingin membuatnya tetap jelas dan mudah dibaca.
[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;
Saya perlu mengekspor log keamanan kami dan menginginkan tanggal dan waktu dalam Waktu Universal Terkoordinasi. Ini terbukti menjadi tantangan untuk dipikirkan, tetapi sangat sederhana untuk dieksekusi:
wevtutil export-log security c:\users\%username%\SECURITYEVENTLOG-%computername%-$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ")).evtx
Kode ajaib hanyalah bagian ini:
$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ"))
hh
adalah waktu 12 jam, tanpanya tt
tidak akan berguna. Menggunakan HH
akan memberi Anda waktu 24 jam. Saya akan merekomendasikan salah satu hhmmsstt
atauHHmmss
hh
ke HH
atas. Saya pikir itulah yang diinginkan kebanyakan orang.
Terima kasih untuk skrip di atas. Sedikit modifikasi untuk menambahkan file yang diakhiri dengan benar. Coba ini ...
$filenameFormat = "MyFileName" + " " + (Get-Date -Format "yyyy-MM-dd") **+ ".txt"**
Rename-Item -Path "C:\temp\MyFileName.txt" -NewName $filenameFormat
Menggunakan:
$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"
karena itu cocok dengan format OP
get-date -f yyyy-MM-dd
membuat saya berhenti sejenak sebelum menyadari bahwa itu bukan yang-f
Operator namun bentuk pendek untuk-Format
parameter . Itu tampak agak keluar dari tempatnya, entah bagaimana :-)