PowerShell का उपयोग करके फ़ाइल नाम पर टाइमस्टैम्प


94

मेरे पास एक स्ट्रिंग में एक पथ है,

"C:\temp\mybackup.zip"

मैं उस स्क्रिप्ट में टाइमस्टैम्प डालना चाहूंगा, उदाहरण के लिए,

"C:\temp\mybackup 2009-12-23.zip"

क्या PowerShell में ऐसा करने का एक आसान तरीका है?

जवाबों:


195

आप एक सब-डेफ़िसिट का उपयोग करके दोहरे-उद्धृत स्ट्रिंग में मनमाने ढंग से 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)"}

5
अरे। get-date -f yyyy-MM-ddमुझे एहसास होने से पहले एक पल के लिए रोक दिया कि यह ऑपरेटर नहीं है , लेकिन पैरामीटर के लिए संक्षिप्त रूप है । यह जगह से बाहर देखा, किसी भी तरह :-)-f -Format
जॉय

धन्यवाद कीथ कि एक बड़ी मदद थी
क्रिस जोन्स

1
और अगर मुझे समय भी चाहिए तो?
जॉन डेमेट्रियौ


16

यहां कुछ 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;

धन्यवाद टॉम, यह भी एक बड़ी मदद
क्रिस जोन्स

12

मुझे हमारे सुरक्षा लॉग को निर्यात करने की आवश्यकता थी और समन्वित यूनिवर्सल टाइम में तारीख और समय चाहते थे। यह पता लगाने के लिए एक चुनौती साबित हुई, लेकिन निष्पादन के लिए इतनी सरल:

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

जादू कोड सिर्फ इस भाग है:

$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ"))

hh12-घंटे का समय है, इसके बिना ttयह उपयोगी नहीं है। उपयोग करने HHसे आपको 24 घंटे का समय मिलेगा। मैं hhmmssttया तो सलाह देंगे याHHmmss
जोश ब्राउन

@JoshBrown मैं ऊपर बदल hhगया HH। मुझे लगता है कि ज्यादातर लोग यही चाहते हैं।
mwfearnley

4

उपरोक्त स्क्रिप्ट के लिए धन्यवाद। सही ढंग से समाप्त होने वाली फ़ाइल में जोड़ने के लिए एक छोटा संशोधन। इसे इस्तेमाल करे ...

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

Rename-Item -Path "C:\temp\MyFileName.txt" -NewName $filenameFormat

2

उपयोग:

$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" इसलिए कि ओपी प्रारूप से मेल खाता है
मार्क शुल्त्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.