পাওয়ারশেল ব্যবহার করে ফাইলের নামের টাইমস্ট্যাম্প


96

আমার একটি স্ট্রিংয়ের পথ রয়েছে,

"C:\temp\mybackup.zip"

আমি সেই স্ক্রিপ্টে একটি টাইমস্ট্যাম্প likeোকাতে চাই, উদাহরণস্বরূপ,

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

পাওয়ারশেলে এটি করার সহজ উপায় কি আছে?

উত্তর:


201

আপনি একটি স্বেচ্ছাকর্ষণ ব্যবহার করে ডাবল-কোটযুক্ত স্ট্রিংয়ে স্বেচ্ছাসেবক পাওয়ারশেল স্ক্রিপ্ট কোডটি সন্নিবেশ করতে পারেন, উদাহরণস্বরূপ, $ () এর মতো:

"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)"}

6
আঃ। get-date -f yyyy-MM-ddআমাকে বুঝতে এটাই আগে একটি মুহূর্ত জন্য বন্ধ করেছে না -f অপারেটর কিন্তু সংক্ষিপ্ত রূপ -Format প্যারামিটার । এটি বরং জায়গাটির বাইরে দেখায়, কোনওরকম :-)
জোয়

ধন্যবাদ কিথ যা দারুণ সাহায্য করেছিল
ক্রিস জোনস

4
এবং আমি যদি সময়ও চাই?
জন ডেমেট্রিও


17

এখানে কিছু পাওয়ারশেল কোড যা কাজ করা উচিত। আপনি এর বেশিরভাগকে কম লাইনে একত্রিত করতে পারেন তবে আমি এটি পরিষ্কার এবং পাঠযোগ্য রাখতে চেয়েছিলাম।

[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;

ধন্যবাদ টম, এটিও একটি দুর্দান্ত সাহায্য ছিল
ক্রিস জোনস

13

আমি আমাদের সুরক্ষা লগ রফতানি করতে প্রয়োজন এবং সমন্বিত ইউনিভার্সাল সময় তারিখ এবং সময় চেয়েছিলেন। এটি নির্ধারণ করা চ্যালেঞ্জ হিসাবে প্রমাণিত, তবে কার্যকর করার পক্ষে এত সহজ:

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
জোশ ব্রাউন

@ জোশব্রাউন আমি উপরে পরিবর্তিত 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" যেহেতু ওপি ফর্ম্যাটের সাথে মেলে
মার্ক শুলথিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.