मेरे पास एक स्ट्रिंग में एक पथ है,
"C:\temp\mybackup.zip"
मैं उस स्क्रिप्ट में टाइमस्टैम्प डालना चाहूंगा, उदाहरण के लिए,
"C:\temp\mybackup 2009-12-23.zip"
क्या PowerShell में ऐसा करने का एक आसान तरीका है?
मेरे पास एक स्ट्रिंग में एक पथ है,
"C:\temp\mybackup.zip"
मैं उस स्क्रिप्ट में टाइमस्टैम्प डालना चाहूंगा, उदाहरण के लिए,
"C:\temp\mybackup 2009-12-23.zip"
क्या PowerShell में ऐसा करने का एक आसान तरीका है?
जवाबों:
आप एक सब-डेफ़िसिट का उपयोग करके दोहरे-उद्धृत स्ट्रिंग में मनमाने ढंग से 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 *.zip | Foreach {
"$($_.DirectoryName)\$($_.BaseName) $(get-date -f yyyy-MM-dd)$($_.extension)"}
यहां कुछ 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;
मुझे हमारे सुरक्षा लॉग को निर्यात करने की आवश्यकता थी और समन्वित यूनिवर्सल टाइम में तारीख और समय चाहते थे। यह पता लगाने के लिए एक चुनौती साबित हुई, लेकिन निष्पादन के लिए इतनी सरल:
wevtutil export-log security c:\users\%username%\SECURITYEVENTLOG-%computername%-$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ")).evtx
जादू कोड सिर्फ इस भाग है:
$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ"))
hh
12-घंटे का समय है, इसके बिना tt
यह उपयोगी नहीं है। उपयोग करने HH
से आपको 24 घंटे का समय मिलेगा। मैं hhmmsstt
या तो सलाह देंगे याHHmmss
hh
गया HH
। मुझे लगता है कि ज्यादातर लोग यही चाहते हैं।
उपरोक्त स्क्रिप्ट के लिए धन्यवाद। सही ढंग से समाप्त होने वाली फ़ाइल में जोड़ने के लिए एक छोटा संशोधन। इसे इस्तेमाल करे ...
$filenameFormat = "MyFileName" + " " + (Get-Date -Format "yyyy-MM-dd") **+ ".txt"**
Rename-Item -Path "C:\temp\MyFileName.txt" -NewName $filenameFormat
उपयोग:
$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"
इसलिए कि ओपी प्रारूप से मेल खाता है
get-date -f yyyy-MM-dd
मुझे एहसास होने से पहले एक पल के लिए रोक दिया कि यह ऑपरेटर नहीं है , लेकिन पैरामीटर के लिए संक्षिप्त रूप है । यह जगह से बाहर देखा, किसी भी तरह :-)-f
-Format