ব্যাচ ফাইলগুলিতে লোকাল-অজানা% DATE% এবং% TIME%?


16

%DATE%এবং %TIME%বিভিন্ন পরিবেশের কমান্ড লাইন এবং একটি ব্যাচ ফাইল ভিতরে বর্তমান তারিখ এবং উইন্ডোজ মেশিনে সময় প্রদান।

দুঃখের বিষয়, সেই মানগুলি স্থানীয়-সচেতন! এর অর্থ, একটি জার্মান মেশিনে বলুন, আপনি পাবেন

26.1.2011

পরিবর্তে

2011-26-01

এই স্ক্রুগুলি বাছাই করা যদি আপনি কোনও ফাইলের নামের মধ্যে এই পরিবর্তনশীলটি ব্যবহার করতে চান।

YYYY-MM-DDউইন্ডোজ ব্যাচ ফাইলে লোকাল-অজানা তারিখের স্ট্রিংটি ধরে রাখার কী সহজ উপায় আছে ?

এই মুহূর্তের জন্য, আমি এই বরং ক্লডজি কাজের সাথে কাজ করছি:

for /f "tokens=1,2,3,4 delims=. " %%i in ('date /t') do set date=%%k-%%j-%%i
echo %date%

তবে এটি এখন জার্মান স্থানীয় নির্দিষ্ট - স্পষ্টতই, একটি সম্পূর্ণ স্বাধীন সমাধান অনেক ভাল হবে।

প্রশ্নে থাকা ওএস হ'ল সার্ভার ২০০৮ I আমি যতটা সম্ভব সম্ভব তৃতীয় পক্ষের সরঞ্জামটি ব্যবহার না করা পছন্দ করব।

উত্তর:


22

কয়েকটি প্রচেষ্টা ছিল ( রব ভ্যান ডার ওয়ুডের কিছু ছিল), তবে সমস্ত লোকেলগুলিতে আসলে কিছুই কার্যকর হয়নি। তবে আপনি বর্তমান সময়টি সহজেই পার্সেবল ফরম্যাটে মাধ্যমে পেতে পারেন

wmic os get LocalDateTime

নিম্নলিখিত ইতিমধ্যে আপনি কমপক্ষে ইউটিসি পাবেন:

@echo off
rem Get the time from WMI - at least that's a format we can work with
set X=
for /f "skip=1 delims=" %%x in ('wmic os get localdatetime') do if not defined X set X=%%x
echo.%X%

rem dissect into parts
set DATE.YEAR=%X:~0,4%
set DATE.MONTH=%X:~4,2%
set DATE.DAY=%X:~6,2%
set DATE.HOUR=%X:~8,2%
set DATE.MINUTE=%X:~10,2%
set DATE.SECOND=%X:~12,2%
set DATE.FRACTIONS=%X:~15,6%
set DATE.OFFSET=%X:~21,4%

echo %DATE.YEAR%-%DATE.MONTH%-%DATE.DAY% %DATE.HOUR%:%DATE.MINUTE%:%DATE.SECOND%.%DATE.FRACTIONS%

যাইহোক, আপনার সম্ভবত টাইম জোন অফসেটের জন্য অ্যাকাউন্টিং করতে হবে (এটি কোনও লগ ফাইলের জন্য না হলে আমি সর্বদা ইউটিসি ব্যবহার করব) তবে এটি কিছুটা গণনা করতে পারে না :-)


1
দুর্দান্ত, এটি দেখতে আমার ঠিক যেমন দেখাচ্ছে! ধন্যবাদ.
পেক্কা

2
রেকর্ডের জন্য: for /f %%x in ('wmic os get localdatetime ^| findstr /b [0-9]') do @set X=%%xএকটি সামান্য বিট ভাল। এখানে আরও একটি কমপ্যাক্ট সংস্করণ পাওয়া যায় , যথা মন্তব্যে
টমলক

আপনি যেখানে কিছু লিখেছেন সেগুলি সমস্ত পুরানো দৃষ্টান্তগুলি সন্ধান এবং আপডেট করা কিছুটা শক্ত। আমি সম্ভবত এতক্ষণে Win32_UTCTime এবং Win32_LocalTime ব্যবহার করতাম।
জোয়ি

সত্যিই দুর্দান্ত!
jeromerg

@ টমালাক যেমন বলেছেন, findstrসমাধানটি আরও ভাল, আমার ক্ষেত্রে হিসাবে, আসল for(ব্যতীত skip) 3 বার পুনরাবৃত্তি হয়। শব্দের জন্য একবার "LocalDateTime", আসল তারিখের জন্য দ্বিতীয়বার এবং খালি মূল্য (ততবার কোনও লাইন বিরতি?) এর জন্য তৃতীয় বার।
cavpollo

9

এখানে আমি ব্যবহার করছি এমন একটি দ্বি-লাইনার যা উইন্ডোজ সংস্করণ বা স্থানীয় সময় সেটিংস নির্বিশেষে কাজ করে বলে মনে হচ্ছে:

FOR /f %%a in ('WMIC OS GET LocalDateTime ^| find "."') DO set DTS=%%a
set CUR_DATE=%DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2%

এটি নিম্নলিখিত আইএসও স্ট্যান্ডার্ড ফর্ম্যাটে% CUR_DATE% নামে পরিচিত একটি ভেরিয়েবল সেট করবে:

yyyy-mm-dd

আমি এটিকে && এর সাথে ওয়ান-লাইনার বানানোর চেষ্টা করেছি, তবে এটি গ্রহণ করার মতো মনে হচ্ছে না, তাই আমি দুটি-লাইনের সংস্করণটি নিয়েছিলাম। আশাকরি এটা সাহায্য করবে.


0

আমি ইউটিসি পেতে এই কৌশলটি ব্যবহার করি ..

for /f "tokens=*" %%i in ('tzutil /g') do set CTZ=%%i
tzutil /s UTC
set UTC=
for /f  "skip=1 delims=" %%i in ('WMIC OS GET LocalDateTime') do if not defined UTC set UTC=%%i
tzutil /s "%CTZ%"
set UTC=%UTC:~0,4%-%UTC:~4,2%-%UTC:~6,3%T%UTC:~8,13%
echo %UTC%

তবে এটির সংক্ষেপে পুরো সিস্টেমটিকে ইউটিসিতে পরিবর্তন করার পার্শ্ব প্রতিক্রিয়া রয়েছে। এটি সম্ভবত একটি ব্যক্তিগত ওয়ার্কস্টেশনে ঠিক আছে, তবে প্রভাবটি বড় প্রোডাকশন সার্ভারের কী হবে তা নিশ্চিত নয়, এটি সম্ভবত ইউটিসি-তে সেট করা উচিত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.