উইন্ডোজ ব্যাচের স্ক্রিপ্টে তারিখ এবং সময় ফর্ম্যাট করুন


192

উইন্ডোজ (উইন্ডোজ এক্সপি) ব্যাচের স্ক্রিপ্টে ফাইলের নাম ইত্যাদিতে পরবর্তী ব্যবহারের জন্য আমার বর্তমান তারিখ এবং সময় ফর্ম্যাট করতে হবে

এটি স্ট্যাক ওভারফ্লো প্রশ্নের মতোই কীভাবে ব্যাচ ফাইলে একটি তারিখ যুক্ত করা যায় তবে সময়ের সাথে সাথে।

আমার এ পর্যন্ত:

echo %DATE%
echo %TIME%
set datetimef=%date:~-4%_%date:~3,2%_%date:~0,2%__%time:~0,2%_%time:~3,2%_%time:~6,2%
echo %datetimef%

যা দেয়:

28/07/2009
 8:35:31.01
2009_07_28__ 8_36_01

% TIME% তে আমি একক অঙ্কের ঘন্টা দেওয়ার জন্য কী উপায় আছে, তাই আমি নিম্নলিখিতটি পেতে পারি?

2009_07_28__08_36_01



আপনি আপনার datetimefভেরিয়েবলের খালি স্থানগুলি প্রতিস্থাপন করতে পারেন এবং এর পরিবর্তে 0 টি রাখতে পারেন। আপনার উদাহরণে:SET datetimef=%datetimef: =0%
শেবাগ্রা

উত্তর:


148

আমি এই স্ক্রিপ্ট দিয়ে শেষ করেছি:

set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
echo hour=%hour%
set min=%time:~3,2%
if "%min:~0,1%" == " " set min=0%min:~1,1%
echo min=%min%
set secs=%time:~6,2%
if "%secs:~0,1%" == " " set secs=0%secs:~1,1%
echo secs=%secs%

set year=%date:~-4%
echo year=%year%

:: WIN2008R2 তে যেমন আমাকে আপনার 'নির্ধারিত মাস =% তারিখ: below 3,2%' নীচের মতো করতে হবে :: অন্যথায় 00 মাসের জন্য উপস্থিত হবে

set month=%date:~4,2%
if "%month:~0,1%" == " " set month=0%month:~1,1%
echo month=%month%
set day=%date:~0,2%
if "%day:~0,1%" == " " set day=0%day:~1,1%
echo day=%day%

set datetimef=%year%%month%%day%_%hour%%min%%secs%

echo datetimef=%datetimef%

11
এফওয়াইআই, উইন্ডোজ সার্ভার 2003 এবং উইন্ডোজ 7 এ, এই স্ক্রিপ্টটি আমাকে "201200Mo_085806" দিয়েছে (সঠিক বছর এবং সময়)।
sfuqua

50
গুগল (আমার মতো) থেকে এখানে আসবেন এমন কারও জন্য নোট হিসাবে: এটি স্থানীয়ভাবে নির্ভর, তাই অ-ইংলিশ উইন্ডোতে কাজ করার জন্য এটির জন্য টুইঙ্কের প্রয়োজন হতে পারে!
পাইট্রিক

আমি এটি এইভাবে করেছি: সময় / টি> টাইম.ডেট সেট / পি ফাইটাইম = <টাইম.ডেট সেট এফডেট =% তারিখ: ~ 6 %% তারিখ: ~ 3,2 %% তারিখ: ~ 0,2 %% ফাইটটাইম: ~ 0,2 %% ফিটাইম: ~ 3,2% প্রতিধ্বনি% fDate% -> 201310170928
বরফ

% সময় কী করে: ~ 0,2% যেখানে: ~,% ​​কাঠামোর উপর কিছু ডকুমেন্টেশন রয়েছে?
ব্যবহারকারী1605665


71
@ECHO OFF
: Sets the proper date and time stamp with 24Hr Time for log file naming
: convention

SET HOUR=%time:~0,2%
SET dtStamp9=%date:~-4%%date:~4,2%%date:~7,2%_0%time:~1,1%%time:~3,2%%time:~6,2% 
SET dtStamp24=%date:~-4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%

if "%HOUR:~0,1%" == " " (SET dtStamp=%dtStamp9%) else (SET dtStamp=%dtStamp24%)

ECHO %dtStamp%

PAUSE

2
উইন্ডোজ সার্ভার 2003 এবং উইন্ডোজ 7 এ, এটি আমাকে সঠিক স্ট্রিং দিয়েছে। আমি অতীতে যা নির্মাণ করেছি তার চেয়ে অনেক বেশি মার্জিত, তাই আপনাকে ধন্যবাদ!
sfuqua

3
এটি রাশিয়ার স্থানীয় লোকাল সহ উইন্ডোজ 7 এ আমাকে দেয়। বর্তমান সময় 2013-05-03T02: 22: 51, তবে স্ক্রিপ্টটি মুদ্রণ করে: "2013-5.-01_02_22_51"
নাইটকোডার

7
% তারিখ% বিভিন্ন লোকেলের সাথে বিভিন্ন স্ট্রিং দেবে।
AechoLiu

2
20146.0._173502 আমাকে (চেক লোকাল)
ফেরায়

2
win7 64bit চূড়ান্ত, ভুল সময়: 20140.01_131612, অবশ্যই (2014.10.26_131612) হতে হবে
waza123

66

আমি এখানে একটি লগ ফাইল নামটি কীভাবে উত্পন্ন করি ( http://ss64.com/nt/syntax-getdate.html এর উপর ভিত্তি করে )

@ECHO OFF
:: Check WMIC is available
WMIC.EXE Alias /? >NUL 2>&1 || GOTO s_error

:: Use WMIC to retrieve date and time
FOR /F "skip=1 tokens=1-6" %%G IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
   IF "%%~L"=="" goto s_done
      Set _yyyy=%%L
      Set _mm=00%%J
      Set _dd=00%%G
      Set _hour=00%%H
      SET _minute=00%%I
      SET _second=00%%K
)
:s_done

:: Pad digits with leading zeros
      Set _mm=%_mm:~-2%
      Set _dd=%_dd:~-2%
      Set _hour=%_hour:~-2%
      Set _minute=%_minute:~-2%
      Set _second=%_second:~-2%

Set logtimestamp=%_yyyy%-%_mm%-%_dd%_%_hour%_%_minute%_%_second%
goto make_dump

:s_error
echo WMIC is not available, using default log filename
Set logtimestamp=_

:make_dump
set FILENAME=database_dump_%logtimestamp%.sql
...

5
ব্যাচে স্থানীয়-স্বতন্ত্র টাইমস্ট্যাম্প জেনারেশন সম্পর্কে প্রশ্নের জন্য এসও-তে সেরা উত্তর।
মাইক ক্যাম্পবেল

2
অসাধারণ! এটিকে সমাধান হিসাবে চিহ্নিত করার একটি উপায় থাকা উচিত
রাডো

48

আমি যখনই তারিখ / সময় স্ট্রিংয়ের প্রয়োজন হয় তখন আমি সাধারণত এটি করি:

set dt=%DATE:~6,4%_%DATE:~3,2%_%DATE:~0,2%__%TIME:~0,2%_%TIME:~3,2%_%TIME:~6,2%
set dt=%dt: =0%

এটি জার্মান তারিখ / সময় বিন্যাসের জন্য (dd.mm.yyyy এইচ: মিমি: এসএস)। মূলত আমি সাবস্ট্রিংগুলিকে একত্রিত করি এবং অবশেষে সমস্ত শূন্যস্থানগুলি শূন্যগুলির সাথে প্রতিস্থাপন করি।

সাবস্ট্রিংগুলি কীভাবে কাজ করে তার সংক্ষিপ্ত বিবরণ:

%VARIABLE:~num_chars_to_skip,num_chars_to_keep%

সুতরাং "29.03.2018" ব্যবহারের মতো তারিখ থেকে কেবল বছরটি পেতে:

%DATE:~6,4%
       ^-----skip 6 characters
         ^---keep 4 characters 

7
এখন পর্যন্ত সবচেয়ে মার্জিত সমাধান যখন আপনার কেবল একটি পরিষ্কার টাইমস্ট্যাম্পের প্রয়োজন (কোনও স্থান বা অন্যান্য অক্ষর নেই)
jvdneste

1
এমআরটি ভাগ করে নেওয়ার জন্য @jvdneste ধন্যবাদ সহ আরও একমত হতে পারিনি
this.user3272243

1
একেবারে দুর্দান্ত - এবং কাজগুলি [প্রয়োজনীয় বাক্য
গঠনটি

38

যদি পাওয়ারশেলটি ইনস্টল করা থাকে তবে আপনি যে কোনও ফর্ম্যাটে পছন্দ করতে পারেন তার জন্য খুব সহজে এবং নির্ভরযোগ্যভাবে তারিখ / সময় পেতে পারেন, উদাহরণস্বরূপ:

for /f %%a in ('powershell -Command "Get-Date -format yyyy_MM_dd__HH_mm_ss"') do set datetime=%%a
move "%oldfile%" "backup-%datetime%"

অবশ্যই আজকাল পাওয়ারশেল সর্বদা ইনস্টল করা থাকে তবে উইন্ডোজ এক্সপিতে আপনি সম্ভবত এই কৌশলটি ব্যবহার করতে চাইলে আপনার ব্যাচ স্ক্রিপ্টটি এমন একটি পরিবেশে ব্যবহার করা হচ্ছে যেখানে আপনি জানেন যে পিএস উপলব্ধ (বা পাওয়ার শেল উপলভ্য থাকলে আপনার ব্যাচের ফাইলটি পরীক্ষা করে দেখুন) ...)

আপনি যুক্তিসঙ্গতভাবে জিজ্ঞাসা করতে পারেন: তারিখ / সময় পাওয়ার জন্য আপনি যদি পাওয়ারশেল ব্যবহার করতে পারেন তবে কেন একটি ব্যাচ ফাইল ব্যবহার করুন তবে আমার মনে হয় এর কয়েকটি স্পষ্ট কারণ হ'ল: (ক) আপনি পাওয়ারশেলের সাথে এতটা পরিচিত নন এবং এখনও বেশিরভাগ কাজ করতে পছন্দ করেন ব্যাচ ফাইলগুলির সাহায্যে পুরানো ধরণের জিনিসগুলি বা (খ) আপনি একটি পুরানো স্ক্রিপ্ট আপডেট করছেন এবং পুরো জিনিসটি পিএসে পোর্ট করতে চান না।


(ক) আমার ক্ষেত্রে, এবং এটি পুরোপুরি কাজ করে (ব্যাট কেবল আমার পরিবেশের জন্য তবে আমার বিভিন্ন পিসিতে মিশ্র লোকেল রয়েছে)। ধন্যবাদ!
ccalboni

30

আমি আজ এই সমস্যাটি পেরিয়ে এসেছি এবং এর সাথে সমাধান করেছি:

SET LOGTIME=%TIME: =0%

এটি 0s এর সাথে স্পেসগুলি প্রতিস্থাপন করে এবং মূলত ঘন্টাটি শূন্য-প্যাড করে।

কিছু দ্রুত অনুসন্ধানের পরেও জানতে পেলাম না এটির জন্য কমান্ড এক্সটেনশনগুলি প্রয়োজন (এখনও SETLOCAL DISABLEEXTENSIONS এর সাথে কাজ করেছে)।


ঠিক আছে, ভেরিয়েবলগুলিতে সাবস্টিউশন। এখন - কোলন ( :) এর বিকল্প কীভাবে রাখবেন ?
টমাসজ গ্যান্ডার

@ টমাসজেন্ডার এটি আমার পক্ষে কাজ করে: echo %TIME: =:%তবে যদি এটি সম্ভবত এটির মতো (যা আমার পক্ষেও কাজ করে) :নিয়ে পালানোর চেষ্টা না করে । ^echo %TIME: =^:%
অপেলো

1
সরলতার জন্য +1। কলোনগুলি ফাইলের নামগুলিতে বৈধ নয়। টাইমটি =% সময় :: =% সেট করে। আপনি কি একক স্টেটমেন্টে 0 টি বিকল্পের স্থান পরিবর্তন করতে, কলোনগুলি মুছতে এবং 6 টি অক্ষরে (এভাবে দশমিক অংশ মুছে ফেলতে) কেটে ফেলতে পারেন? যদি এটি দুটি বা তিনটি লাইন নেয় তবে এটি এতটা বড় বিষয় নয়। আমি উৎসুক.
রাইডারবিল

আমি জানি না। যদি আপনি একটি পেতে অনুগ্রহ করে অনুসরণ করুন!
অপেল্লো

21

যেমনটি উল্লেখ করা হয়েছে, তারিখ এবং সময়কে পার্সিং করা কেবলমাত্র তখনই কার্যকর যখন আপনি বর্তমান ব্যবহারকারী দ্বারা ব্যবহৃত ফর্ম্যাটটি জানেন (উদাহরণস্বরূপ, এমএম / ডিডি / ইয়ি বা ডিডি-এমএম-ইয়াই কেবল দুটি নাম রাখার জন্য)। এটি নির্ধারণ করা যেতে পারে, তবে আপনি সমস্ত স্ট্রেসিং এবং পার্সিংয়ের সময় আপনি এখনও এমন কিছু পরিস্থিতি শেষ করবেন যেখানে অপ্রত্যাশিত বিন্যাস ব্যবহৃত হবে এবং আরও টুইটগুলি প্রয়োজনীয় হবে।

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

সিএমওএস ঘড়িটি বেশ কাঁচা উপায়ে ব্যবহার করে ব্যাচের কৌশলগুলিও রয়েছে তবে এটি বেশিরভাগ মানুষের কাছে খালি তারের খুব কাছে এবং তারিখ / সময় পুনরুদ্ধার করার জন্য পছন্দসই জায়গাও নয়।

নীচে একটি সমাধান যা উপরের সমস্যাগুলি এড়িয়ে চলে। হ্যাঁ, এটি অন্যান্য কিছু সমস্যাগুলির সাথে পরিচয় করিয়ে দেয় তবে আমার উদ্দেশ্যগুলির জন্য আমি এটি আধুনিক উইন্ডোজ সিস্টেমের জন্য .bat ফাইলগুলিতে ডেটস্ট্যাম্প তৈরির সবচেয়ে সহজ, পরিষ্কার, সবচেয়ে বহনযোগ্য সমাধান হিসাবে পেয়েছি। এটি কেবল একটি উদাহরণ, তবে আমি মনে করি আপনি অন্যান্য তারিখ এবং / অথবা সময় ফর্ম্যাট ইত্যাদির জন্য কীভাবে পরিবর্তন করবেন তা দেখতে পাবেন I

reg copy "HKCU\Control Panel\International" "HKCU\Control Panel\International-Temp" /f
reg add "HKCU\Control Panel\International" /v sShortDate /d "yyMMdd" /f
@REM reg query "HKCU\Control Panel\International" /v sShortDate
set LogDate=%date%
reg copy "HKCU\Control Panel\International-Temp" "HKCU\Control Panel\International" /f

3
শুধু আমি যা খুঁজছিলাম। এমন কিছু যা প্রতিটি লোকেল সেটিংয়ে কাজ করে। ধন্যবাদ!
গেছে_ডিএম

"আধুনিক উইন্ডোজ সিস্টেমগুলি" এর জন্য +1 আমাদের মোকাবেলা করতে হবে :) একদিকে ঠাট্টা করা, এটি একটি খুব বুদ্ধিমান এবং আপনি যেমন বলেছিলেন, বহনযোগ্য, বিষয়টি নিয়ে কাজ করার উপায়।
জ্যাচ ইয়ং

9
এটি একটি ভয়ানক সমাধান। যদি এটি ব্যর্থ হয় তবে একটি বিশ্বব্যাপী সেটিংস স্থায়ীভাবে পরিবর্তিত হবে। এটি অন্যান্য অ্যাপ্লিকেশনগুলির সাথে রেসের শর্তগুলিও উপস্থাপন করে।
মাইককুলস 13:25

আপনি reg query "HKCU\Control Panel\International" /v sShortDateরেজিস্ট্রি সেটিংটি পরিবর্তন না করেই অংশটি ব্যবহার করতে পারেন (পাঠকের কাছে অনুশীলন রেখে দিন!)।
ট্রাইসেস

9

নিম্নলিখিতটি সরাসরি উত্তর না হলেও একটি নিকটবর্তী হতে পারে?

set hour=%time:~0,2%
if "%hour:~0,1%" == " " set datetimef=%date:~-4%_%date:~3,2%_%date:~0,2%__0%time:~1,2%_%time:~3,2%_%time:~6,2%
else set datetimef=%date:~-4%_%date:~3,2%_%date:~0,2%__%time:~0,2%_%time:~3,2%_%time:~6,2%

কমপক্ষে এটি অনুপ্রেরণামূলক হতে পারে।


9

আপনার যদি এই ফর্ম্যাটটির সঠিক প্রয়োজন না হয়:

2009_07_28__08_36_01

তারপরে আপনি নিম্নলিখিত 3 টি লাইন কোড ব্যবহার করতে পারেন যা% তারিখ% এবং% সময়% ব্যবহার করে:

set mydate=%date:/=%
set mytime=%time::=%
set mytimestamp=%mydate: =_%_%mytime:.=_%

নোট: অক্ষর /এবং :সরিয়ে ফেলা হয় এবং চরিত্র .এবং স্থান একটি আন্ডারস্কোর প্রতিস্থাপিত হয়েছে।

আউটপুট উদাহরণ (বুধবার 8/5/15 12:49 PM তে 50 সেকেন্ড এবং 93 মিলিসেকেন্ড সহ গৃহীত):

echo %mytimestamp%
Wed_08052015_124950_93

যখন ঘন্টা 12 এর কম হয়, মাইডেট =% তারিখ সেট করুন: / =% সেট মাইটাইম =% সময় :: =% সেট মাইটাইম =% মাইটাইম: = 0% মাইটাইমস্ট্যাম্প =% মাইডেট: = _% _% মাইটাইম:। = _ %
রাগছে

8
REM Assumes UK style date format for date environment variable (DD/MM/YYYY).
REM Assumes times before 10:00:00 (10am) displayed padded with a space instead of a zero.
REM If first character of time is a space (less than 1) then set DATETIME to:
REM YYYY-MM-DD-0h-mm-ss
REM Otherwise, set DATETIME to:
REM YYYY-MM-DD-HH-mm-ss
REM Year, month, day format provides better filename sorting (otherwise, days grouped
REM together when sorted alphabetically).

IF "%time:~0,1%" LSS "1" (
   SET DATETIME=%date:~6,4%-%date:~3,2%-%date:~0,2%-0%time:~1,1%-%time:~3,2%-%time:~6,2%
) ELSE (
   SET DATETIME=%date:~6,4%-%date:~3,2%-%date:~0,2%-%time:~0,2%-%time:~3,2%-%time:~6,2%
)

ECHO %DATETIME%

6

offset:lengthসমর্থিত বিন্যাস SETউইন্ডোজে কমান্ড প্যাড আপনার মঞ্জুরি দেয় না 0যেমন আপনি আগ্রহী বলে মনে হচ্ছে।

যাইহোক, আপনি আলাদা স্ট্রিং সহ ঘন্টা কম 10এবং
প্যাডের চেয়ে কম সময় পরীক্ষা করতে কোনও BATCH স্ক্রিপ্ট কোড করতে পারেন echo

আপনি এই লিঙ্কে কমান্ড কিছু তথ্যSET পাবেন ।


এখানে যাওয়ার জন্য আপনি অন্যান্য প্রোগ্রামিং পদ্ধতিতেও পরিবর্তন করতে পারেন।

ইউনিক্স ব্যাশে এটি বেশ সহজ (উইন্ডোজ-এ সিগউইনের সাথে উপলভ্য) কেবলমাত্র বলতে গেলে,

date +%Y_%m_%d__%H_%M_%S

এবং, এটি সর্বদা সঠিকভাবে প্যাড করে।


6

আমি এটি এইভাবে করেছি:

REM Generate FileName from date and time in format YYYYMMTTHHMM

Time /T > Time.dat
set /P ftime= < Time.dat

set FileName=LogFile%date:~6%%date:~3,2%%date:~0,2%%ftime:~0,2%%ftime:~3,2%.log

echo %FileName%

LogFile201310170928.log


এটি ইংলিশ সার্ভারে চলছে (ওএস নাম: মাইক্রোসফ্ট (আর) উইন্ডোজ (আর) সার্ভার 2003 স্ট্যান্ডার্ড এক্স 64 সংস্করণ, ওএস সংস্করণ: 5.2.3790 সার্ভিস প্যাক 2 বিল্ড 3790)
আইস

1
এবং এটি জার্মান সার্ভারেও পরীক্ষিত হয়েছে (বেটারিবিসিস্টেমনাম: মাইক্রোসফ্ট উইন্ডোজ সার্ভার ® ২০০৮ এন্টারপ্রাইজ, বেটারিবিএসসিস্টেমভারশন: 6.0.6002 সার্ভিস প্যাক 2 বিল্ড 6002)
আইস

1
এমনকি এটি একদম ঠিক আছে: (বেটারিব্যাসিস্টেমনাম: মাইক্রোসফ্ট উইন্ডোজ সার্ভার 2012 স্ট্যান্ডার্ড, বেটারিবিএসসিস্টেমভারশন: 6.2.9200 নিচ জুট্রিফেন্ড বিল্ড 9200)
আইস

4
::========================================================================  
::== CREATE UNIQUE DATETIME STRING IN FORMAT YYYYMMDD-HHMMSS   
::======= ================================================================  
FOR /f %%a IN ('WMIC OS GET LocalDateTime ^| FIND "."') DO SET DTS=%%a  
SET DATETIME=%DTS:~0,8%-%DTS:~8,6%  

টাইমজোন সম্পর্কিত এই বিন্যাসে সর্বদা প্রথম লাইনটি আউটপুট দেয়:
20150515150941.077000 + 120
এটি আপনাকে আপনার ইচ্ছাকে ফিট করার জন্য আউটপুট বিন্যাসের সাথে ছেড়ে দেয়।


4

এই ব্যাট ফাইলটি (ডেটটাইমস্ট্রেট বাট হিসাবে সংরক্ষণ করুন) 3 বার ডেটটাইম স্ট্রিং উত্পাদন করে: (1) সপ্তাহ এবং সেকেন্ডের দিন সহ দীর্ঘ লম্বা সময়কালীন স্ট্রিং, (2) তাদের ছাড়াই সংক্ষিপ্ত ডেটটাইম স্ট্রিং এবং (3) কোডের সংক্ষিপ্ত সংস্করণ।

@echo off
REM "%date: =0%" replaces spaces with zeros
set d=%date: =0%
REM "set yyyy=%d:~-4%" pulls the last 4 characters
set yyyy=%d:~-4%
set mm=%d:~4,2%
set dd=%d:~7,2%
set dow=%d:~0,3%
set d=%yyyy%-%mm%-%dd%_%dow%

set t=%TIME: =0%
REM "%t::=%" removes semi-colons
REM Instead of above, you could use "%t::=-%" to 
REM replace semi-colons with hyphens (or any 
REM non-special character)
set t=%t::=%
set t=%t:.=%

set datetimestr=%d%_%t%
@echo  Long date time str = %datetimestr%

set d=%d:~0,10%
set t=%t:~0,4%
set datetimestr=%d%_%t%
@echo Short date time str = %datetimestr%


@REM Short version of the code above
set d=%date: =0%
set t=%TIME: =0%
set datetimestr=%d:~-4%-%d:~4,2%-%d:~7,2%_%d:~0,3%_%t:~0,2%%t:~3,2%%t:~6,2%%t:~9,2%
@echo Datetimestr = %datetimestr%

pause

যথাযথ ক্রেডিট দেওয়ার জন্য, আমি পিটার মর্টেনসেন (জুন 21 '14 এ 21:02 তে) এবং অপেলো (আগস্ট 25 '11 এ 14:27 এ) ধারণাগুলি একত্রিত করেছি।

আপনি এটিকে আরও খাটো লিখতে পারেন তবে এই দীর্ঘ সংস্করণটি কোড পড়া এবং বোঝা সহজ করে তোলে।


4

আমি ব্যাচের ফাইলগুলিতে সত্যই নতুন এবং এটি আমার কোড !! (কেন আমি নিশ্চিত তা জানি না তবে আমি তারিখ / টি এবং সময় / টি একসাথে একত্রিত করতে পারি না এবং আমি % তারিখ% এবং % সময়% সরাসরি কোনও পরিবর্তনশীল ব্যতীত ব্যবহার করতে পারি না ...))

@ECHO OFF
set ldt=%date% %time%
echo %ldt%>> logs.txt
EXIT

এটি অন্যের কাছ থেকে পুনরায় পুনঃব্যবহার করা হয় (প্রশ্নটি ফাইলের নাম হিসাবে ব্যবহারের জন্য ফর্ম্যাট টাইমডেট পেতে হয়েছিল)।


4

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

set HH=%time:~0,2%
if %HH% LEQ 9 (
set HH=%time:~1,1%
)

3

একটি উৎপন্ন করার জন্য YYYY-MM-DD hh:mm:ss(24-ঘন্টা) টাইমস্ট্যাম্প আমি ব্যবহার:

SET CURRENTTIME=%TIME%
IF "%CURRENTTIME:~0,1%"==" " (SET CURRENTTIME=0%CURRENTTIME:~1%)
FOR /F "tokens=2-4 delims=/ " %%A IN ('DATE /T') DO (SET TIMESTAMP=%%C-%%A-%%B %CURRENTTIME%)

এটি কি কোনও নির্দিষ্ট আঞ্চলিক সেটিং অনুমান করে?
পিটার মর্টেনসেন

1
Ss64.com/nt/syntax-variables.html অনুসারে এবং %TIME%এবং %DATE%ভেরিয়েবলগুলি যথাক্রমে TIMEএবং DATEকমান্ডগুলির একই বিন্যাস ব্যবহার করে । আমার সিস্টেমে ভেরিয়েবলগুলি আমার আঞ্চলিক সেটিংসের সাথে মেলে না।
এম ডুডলি

3

এই ব্যাচের স্ক্রিপ্টটি ওপি যা যা চায় ঠিক তা করবে (উইন্ডোজ এক্সপি এসপি 3 তে পরীক্ষা করা)।

আমি আগে "জেএফএফ" দ্বারা বর্ণিত সেই চতুর রেজিস্ট্রি ট্রিকটিও ব্যবহার করেছিলাম যা আইএমএইচও-র তারিখের 100% ধারাবাহিক বিন্যাস পাওয়ার সহজতম উপায় "yyyy_MM_dd" কোনও উইন্ডো সিস্টেমে নতুন বা পুরাতন । এটি করার জন্য একটি রেজিস্ট্রি মান পরিবর্তন তাত্ক্ষণিক অস্থায়ী এবং তুচ্ছ; এটি অবিলম্বে ফিরে যাওয়ার আগে এটি কয়েক মিলি সেকেন্ড স্থায়ী হয়।

তাত্ক্ষণিক ডেমো জন্য এই ব্যাচ ফাইলটি ডাবল ক্লিক করুন, কমান্ড প্রম্পট উইন্ডো পপ আপ এবং আপনার টাইমস্ট্যাম্প প্রদর্শিত হবে। । । । ।

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: generates a custom formatted timestamp string using date and time.
:: run this batch file for an instant demo.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

@ECHO OFF
SETLOCAL & MODE CON:COLS=80 LINES=15 & COLOR 0A

:: --- CHANGE THE COMPUTER DATE FORMAT TEMPORARILY TO MY PREFERENCE "yyyy_MM_dd",
REG COPY "HKCU\Control Panel\International" "HKCU\Control Panel\International-Temp" /f 2>nul >nul
REG ADD "HKCU\Control Panel\International" /v sShortDate /d "yyyy_MM_dd" /f 2>nul >nul

SET MYDATE=%date%

:: --- REVERT COMPUTER DATE BACK TO SYSTEM PREFERENCE
REG COPY "HKCU\Control Panel\International-Temp" "HKCU\Control Panel\International" /f 2>nul >nul
REG DELETE "HKCU\Control Panel\International-Temp" /f 2>nul >nul

:: --- SPLIT THE TIME [HH:MM:SS.SS] TO THREE SEPARATE VARIABLES [HH] [MM] [SS.SS]
FOR /F "tokens=1-3 delims=:" %%A IN ('echo %time%') DO (
SET HOUR=%%A
SET MINUTES=%%B
SET SECONDS=%%C
)

:: --- CHOOSE ONE OF THESE TWO OPTIONS :
:: --- FOR 4 DIGIT SECONDS        //REMOVES THE DOT FROM THE SECONDS VARIABLE [SS.SS]
:: SET SECONDS=%SECONDS:.=%
:: --- FOR 2 DIGIT SECONDS        //GETS THE FIRST TWO DIGITS FROM THE SECONDS VARIABLE [SS.SS]
SET SECONDS=%SECONDS:~0,2% 

:: --- FROM 12 AM TO 9 AM, THE HOUR VARIABLE WE EXTRACTED FROM %TIME% RETURNS A SINGLE DIGIT, 
:: --- WE PREFIX A ZERO CHARACTER TO THOSE CASES, SO THAT OUR WANTED TIMESTAMP
:: --- ALWAYS GENERATES DOUBLE-DIGIT HOURS (24-HOUR CLOCK TIME SYSTEM).
IF %HOUR%==0 (SET HOUR=00)
IF %HOUR%==1 (SET HOUR=01)
IF %HOUR%==2 (SET HOUR=02)
IF %HOUR%==3 (SET HOUR=03)
IF %HOUR%==4 (SET HOUR=04)
IF %HOUR%==5 (SET HOUR=05)
IF %HOUR%==6 (SET HOUR=06)
IF %HOUR%==7 (SET HOUR=07)
IF %HOUR%==8 (SET HOUR=08)
IF %HOUR%==9 (SET HOUR=09)

:: --- GENERATE OUR WANTED TIMESTAMP
SET TIMESTAMP=%MYDATE%__%HOUR%_%MINUTES%_%SECONDS%

:: --- VIEW THE RESULT IN THE CONSOLE SCREEN
ECHO.
ECHO    Generate a custom formatted timestamp string using date and time.
ECHO.
ECHO    Your timestamp is:    %TIMESTAMP%
ECHO.
ECHO.
ECHO    Job is done. Press any key to exit . . .
PAUSE > NUL

EXIT

উইন্ডোজ 2019 এও কাজ করে। আমি আপনার সমাধানটি চারপাশে রাখব, আমি এটি পছন্দ করি :)
user225479

প্রশ্ন, আমি ঠিক আবিষ্কার করেছি যে মধ্যরাতের পরে, পিছনে "0" আউটপুট থেকে নামবে। কোন ধারণা কেন? আপনার স্ক্রিপ্ট সহ আমার আউটপুট দেয়: আপনার টাইমস্ট্যাম্পটি হল: 2019_09_16__0_58_07 ..00_58_07 এর পরিবর্তে। তবে 1 টার পরে এটি প্রত্যাশার মতো কাজ করে (এবং এটি আউটপুট দেবে: ..01_01_56)।
ব্যবহারকারী225479

আমি ইএলএসই বিবৃতিতে আইএফ% HOUR% == 0 (SET HOUR = 00) যুক্ত করেছি added এটি ঠিক করা উচিত, আমি আশা করি :)
user225479

প্রতিক্রিয়া @ ব্যবহারকারীর জন্য ধন্যবাদ 2525479। আমি কোডটি ঠিক করে রেখেছি। এইচটিআর ভেরিয়েবলের সমস্ত সম্ভাব্য ক্রম 24 টি HOUR ফর্ম্যাটে রূপান্তরিত হবে এখন সঠিকভাবে কাজ করবে। আমি লেআউটটিও সংশোধন করেছি যাতে এটি পড়া সহজ হয়।
derty2

2
set hourstr = %time:~0,2%
if "%time:~0,1%"==" " (set hourstr=0%time:~1,1%)
set datetimestr=%date:~0,4%%date:~5,2%%date:~8,2%-%hourstr%%time:~3,2%%time:~6,2%

2

"অনুসন্ধান_ফায়ালস.বাট" নামে একটি ফাইল তৈরি করুন এবং নীচের বিষয়বস্তুটি ফাইলে রাখুন। তারপরে এটিতে ডাবল ক্লিক করুন। এএম যথাযথভাবে পরিচালনা করতে অস্থায়ী% THH% ভেরিয়েবলটি স্থাপন করা হয়েছিল place যদি সময়ের প্রথম 2 অঙ্কে 0 থাকে তবে উইন্ডোজ এলওজি ফাইলের বাকী ফাইলটির নাম উপেক্ষা করে।

CD .
SET THH=%time:~0,2%
SET THH=%THH: =0%
dir /s /b *.* > %date:~10,4%-%date:~4,2%-%date:~7,2%@%THH%.%time:~3,2%.%time:~6,2%.LOG

2

আমি @ লোরাক্সের উপরে সংক্ষিপ্ত সংস্করণটি পছন্দ করি তবে অন্য ভাষার সেটিংসের জন্য এটি কিছুটা আলাদা হতে পারে।

উদাহরণস্বরূপ, জার্মান ভাষা সেটিংসে (প্রাকৃতিক তারিখের ফর্ম্যাট সহ: dd.mm.yyyy) মাসের ক্যোয়ারীটি 4,2 থেকে 3,2 এ পরিবর্তন করতে হবে:

@ECHO OFF
: Sets the proper date and time stamp with 24h time for log file naming convention i.e.

SET HOUR=%time:~0,2%
SET dtStamp9=%date:~-4%%date:~3,2%%date:~7,2%_0%time:~1,1%%time:~3,2%%time:~6,2% 
SET dtStamp24=%date:~-4%%date:~3,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%

if "%HOUR:~0,1%" == " " (SET dtStamp=%dtStamp9%) else (SET dtStamp=%dtStamp24%)

ECHO %dtStamp%
: Outputs= 20160727_081040
: (format: YYYYMMDD_HHmmss; e.g.: the date-output of this post timestamp)

PAUSE

1

এটি আমার জন্য 2 সেন্ট datetime string। উপর MM DD YYYYসিস্টেম প্রথম ও দ্বিতীয় সুইচ %DATE:~এন্ট্রি।

    REM ====================================================================================
    REM CREATE UNIQUE DATETIME STRING FOR ADDING TO FILENAME
    REM ====================================================================================
    REM Can handle dd DDxMMxYYYY and DDxMMxYYYY > CREATES YYYYMMDDHHMMSS (x= any character)
    REM ====================================================================================
    REM CHECK for SHORTDATE dd DDxMMxYYYY 
    IF "%DATE:~0,1%" GTR "3" (
        SET DATETIME=%DATE:~9,4%%DATE:~6,2%%DATE:~3,2%%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
    ) ELSE (
    REM ASSUMES SHORTDATE DDxMMxYYYY
        SET DATETIME=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
        )
    REM CORRECT FOR HOURS BELOW 10
    IF %DATETIME:~8,2% LSS 10 SET DATETIME=%DATETIME:~0,8%0%DATETIME:~9,5%
    ECHO %DATETIME%

1

আমি গৃহীত উত্তর চেষ্টা করেছি এবং এটি বেশ ভাল কাজ করে। দুর্ভাগ্যক্রমে ইউএস টাইম ফর্ম্যাটটি এইচ: এমএম: এসএস.সিএস হিসাবে উপস্থিত হয় এবং সম্মুখভাগে 0 টি হারিয়ে যাওয়া সকাল 10 টার আগে পার্সিংয়ের সমস্যা সৃষ্টি করে। এই প্রতিবন্ধকতাটি অতিক্রম করতে এবং বিশ্ব সময়ের ফর্ম্যাটগুলির বেশিরভাগের পার্সিংয়ের অনুমতি দেওয়ার জন্য, আমি এই সাধারণ রুটিনটি নিয়ে এসেছি যা বেশ ভালভাবে কাজ করে বলে মনে হচ্ছে।

:ParseTime
rem The format of %%TIME%% is H:MM:SS.CS or (HH:MM:SS,CS) for example 0:01:23.45 or 23:59:59,99
FOR /F "tokens=1,2,3,4 delims=:.," %%a IN ("%1") DO SET /A "%2=(%%a * 360000) + (%%b * 6000) + (%%c * 100) + %%d"
GOTO :EOF

এই রুটিনের সাথে দুর্দান্ত জিনিসটি হ'ল আপনি প্রথম প্যারামিটার হিসাবে সময় স্ট্রিংয়ে এবং দ্বিতীয় প্যারামিটার হিসাবে পরিবেশের পরিবর্তনশীলের নামটি আপনি রাখতে চান (সেন্টিসেকেন্ডে)। উদাহরণ স্বরূপ:

CALL :ParseTime %START_TIME% START_CS
CALL :ParseTime %TIME% END_CS
SET /A DURATION=%END_CS% - %START_CS%

(* ক্রিস *)


1

এরকম কিছু হতে পারে:

@call:DateTime

@for %%? in (
    "Year   :Y"
    "Month  :M"
    "Day    :D"
    "Hour   :H"
    "Minutes:I"
    "Seconds:S"
) do @for /f "tokens=1-2 delims=:" %%# in (%%?) do @for /f "delims=" %%_ in ('echo %%_DT_%%$_%%') do @echo %%# : _DT_%%$_ : %%_

:: OUTPUT
:: Year    : _DT_Y_ : 2014
:: Month   : _DT_M_ : 12
:: Day     : _DT_D_ : 17
:: Hour    : _DT_H_ : 09
:: Minutes : _DT_I_ : 04
:: Seconds : _DT_S_ : 35

@pause>nul

@goto:eof

:DateTime
    @verify errorlevel 2>nul & @wmics Alias /? >nul 2>&1
    @if not errorlevel 1 (
        @for /f "skip=1 tokens=1-6" %%a in ('wmic path win32_localtime get day^,hour^,minute^,month^,second^,year /format:table') do @if not "%%f"=="" ( set "_DT_D_=%%a" & set "_DT_H_=%%b" & set "_DT_I_=%%c" & set "_DT_M_=%%d" & set "_DT_S_=%%e" & set "_DT_Y_=%%f" )
    ) else (
        @set "_DT_T_=1234567890 "
    )
    @if errorlevel 1 (
        @for %%? in ("iDate" "sDate" "iTime" "sTime" "F" "Y" "M" "D" "H" "I" "S") do @set "_DT_%%~?_=%%~?"
        @for %%? in ("Date" "Time") do @for /f "skip=2 tokens=1,3" %%a in ('reg query "HKCU\Control Panel\International" /v ?%%~? 2^>nul') do @for /f %%x in ('echo:%%_DT_%%a_%%') do @if "%%x"=="%%a" set "_DT_%%a_=%%b"
        @for /f "tokens=1-3 delims=%_DT_T_%" %%a in ("%time%") do @set "_DT_T_=%%a%%b%%c"
    )
    @if errorlevel 1 (
        @if "%_DT_iDate_%"=="0" (set "_DT_F_=_DT_D_ _DT_Y_ _DT_M_") else if "%_DT_iDate_%"=="1" (set "_DT_F_=_DT_D_ _DT_M_ _DT_Y_") else if "%_DT_iDate_%"=="2" (set "_DT_F_=_DT_Y_ _DT_M_ _DT_D_")
        @for /f "tokens=1-4* delims=%_DT_sDate_%" %%a in ('date/t') do @for /f "tokens=1-3" %%x in ('echo:%%_DT_F_%%') do @set "%%x=%%a" & set "%%y=%%b" & set "%%z=%%c"
        @for /f "tokens=1-3 delims=%_DT_T_%" %%a in ("%time%") do @set "_DT_H_=%%a" & set "_DT_I_=%%b" & set "_DT_S_=%%c"
        @for %%? in ("iDate" "sDate" "iTime" "sTime" "F" "T") do @set "_DT_%%~?_="
    )
    @for %%i in ("Y"                ) do @for /f %%j in ('echo:"%%_DT_%%~i_%%"') do @set /a _DT_%%~i_+=  0 & @for /f %%k in ('echo:"%%_DT_%%~i_:~-4%%"') do @set "_DT_%%~i_=%%~k"
    @for %%i in ("M" "D" "H" "I" "S") do @for /f %%j in ('echo:"%%_DT_%%~i_%%"') do @set /a _DT_%%~i_+=100 & @for /f %%k in ('echo:"%%_DT_%%~i_:~-2%%"') do @set "_DT_%%~i_=%%~k"
@exit/b

1

এই জাতীয় পরিস্থিতিতে একটি সাধারণ, স্ট্যান্ডার্ড প্রোগ্রামিং পদ্ধতির ব্যবহার করুন: অজানা সত্তাটিকে পার্স করার জন্য বিশাল প্রচেষ্টার ব্যয় না করে কেবল বর্তমান কনফিগারেশনটি সংরক্ষণ করুন, এটি একটি পরিচিত অবস্থায় পুনরায় সেট করুন, তথ্যটি বের করুন এবং তারপরে মূল অবস্থা পুনরুদ্ধার করুন। শুধুমাত্র স্ট্যান্ডার্ড উইন্ডোজ রিসোর্স ব্যবহার করুন।

বিশেষত, তারিখ এবং সময় ফর্ম্যাটগুলি রেজিস্ট্রি কী HKCU \ কন্ট্রোল প্যানেল \ আন্তর্জাতিক [[এমএস সংজ্ঞা] "মান": "এসটাইম ফর্ম্যাট" এবং "sShortDate" এর অধীনে সংরক্ষণ করা হয়। Reg হ'ল সমস্ত উইন্ডোজ সংস্করণ সহ অন্তর্ভুক্ত কনসোল রেজিস্ট্রি সম্পাদক। এইচকেসিইউ কীটি সংশোধন করার জন্য উন্নত সুবিধাগুলির প্রয়োজন নেই

Prompt $N:$D $T$G

::Save current config to a temporary (unique name) subkey, Exit if copy fails
Set DateTime=
Set ran=%Random%
Reg copy "HKCU\Control Panel\International" "HKCU\Control Panel\International-Temp%ran%" /f
If ErrorLevel 1 GoTO :EOF

::Reset the date format to your desired output format (take effect immediately)
::Resetting the time format is useless as it only affect subsequent console windows
::Reg add "HKCU\Control Panel\International" /v sTimeFormat /d "HH_mm_ss"   /f
Reg add "HKCU\Control Panel\International" /v sShortDate  /d "yyyy_MM_dd" /f

::Concatenate the time and (reformatted) date strings, replace any embedded blanks with zeros
Set DateTime=%date%__%time:~0,2%_%time:~3,2%_%time:~6,2%
Set DateTime=%DateTime: =0%

::Restore the original config and delete the temp subkey, Exit if restore fails
Reg copy   "HKCU\Control Panel\International-Temp%ran%" "HKCU\Control Panel\International" /f
If ErrorLevel 1 GoTO :EOF
Reg delete "HKCU\Control Panel\International-Temp%ran%" /f

সরল, সরল এবং সমস্ত অঞ্চলের জন্য কাজ করা উচিত।

যে কারণে আমি বুঝতে পারি না, "sShortDate" মানটি পুনরায় সেট করা কনসোল উইন্ডোতে তত্ক্ষণাত্ কার্যকর হয় তবে একটি নতুন কনসোল উইন্ডো না খোলার আগ পর্যন্ত খুব অনুরূপ "sTime Format" মানটি পুনরায় সেট করা কার্যকর হয় না until তবে, পরিবর্তনযোগ্য একমাত্র জিনিস হ'ল ডিলিমিটার - ডিজিটের অবস্থানগুলি স্থির থাকে L একইভাবে "এইচএইচ" সময় টোকেন নেতৃস্থানীয় শূন্যগুলি প্রিপেন্ড করার কথা থাকলেও তা হয় না। ভাগ্যক্রমে, কাজের ক্ষেত্রগুলি সহজ।


-1 "একটি শীর্ষস্থানীয় শূন্য যুক্ত করার পরিবর্তে আপনি কেন মেশিন কনফিগারেশন ব্যাহত করবেন না, এটিকে আপনার এলোমেলো প্রয়োজনে পরিবর্তন করুন এবং আপনার জিনিসটি করেন?" এই পদ্ধতির এই দুনিয়া থেকে বাইরে, যথেষ্ট পরিশ্রমের প্রয়োজন এবং এটি অনাকাঙ্ক্ষিত পরিণতিগুলির অসীম সংখ্যক হতে পারে। এবং আমি পাঠযোগ্যতা এবং স্ট্যান্ডার্ড প্রত্যাশিত কোড আচরণের উপরও আলোচনা শুরু করতে চাই না। যশ।
ভাইরাফরা

রিসেট sTimeFormatসময় ফর্ম্যাট অনর্থক । নাঃ। এটি পরবর্তী কনসোল for /f "delims=" %%G in ('cmd /C echo SET "DateTime=%%date%%__%%time%%"') do %%G
প্রম্পটকে

1

এই স্ক্রিপ্টটিতে ডাব্লুএমআই সরঞ্জামের মাধ্যমে একটি ডাব্লুএমআই ইন্টারফেস অ্যাক্সেস প্রাইমারী ব্যবহার করা হয়েছে যা উইন্ডোজ এক্সপি পেশাদার (উইন্ডোজ এক্সপি প্রফেশনাল হ'ল উইন্ডোজের একটি অবিচ্ছেদ্য অঙ্গ) (হোম সংস্করণটিও সমর্থিত, তবে ডিফল্টটি ডিভাইসটি ইনস্টল করা হয়নি)। স্ক্রিপ্টটি ডাব্লুএমআই ইন্টারফেস অ্যাক্সেসের জন্য ডাব্লুএসএইচ ভিএসক্রিপ্ট তৈরি করে ফোন করে ডাব্লুএমআইসি সরঞ্জাম সরবরাহের অনুরূপ ফর্ম্যাট সহ সময়কে কনসোল আউটপুট লিখতে সাহায্য করে নিখোঁজ ডাব্লুএমআইসি সরঞ্জামটির কার্যকর সমাধান করে ments

@ECHO OFF
REM Returns: RETURN
REM Modify:  RETURN, StdOut
REM Required - mandatory: none
REM Required - optionaly: format strings delimited by a space to format an output delimited by predefined delimiter
REM    YYYY = 4-digit year
REM      MM = 2-digit month
REM      DD = 2-digit day
REM      hh = 2-digit hour
REM      mm = 2-digit minute
REM      ss = 2-digit second
REM      ms = 3-digit millisecond

CALL :getTime %*
ECHO %RETURN%
GOTO :EOF


REM SUBROUTINE
REM Returns: RETURN
REM Modify:  RETURN
REM Required - mandatory: none
REM Required - optionaly: format strings delimited by a space to format an output delimited by predefined delimiter
REM    YYYY = 4-digit year
REM      MM = 2-digit month
REM      DD = 2-digit day
REM      hh = 2-digit hour
REM      mm = 2-digit minute
REM      ss = 2-digit second
REM      ms = 3-digit millisecond
:getTime
  SETLOCAL EnableDelayedExpansion
    SET DELIM=-
    WHERE /Q wmic.exe
    IF NOT ERRORLEVEL 1 FOR /F "usebackq skip=1 tokens=*" %%x IN (`wmic.exe os get LocalDateTime`) DO (SET DT=%%x & GOTO getTime_Parse)
    SET _TMP=%TEMP:"=%
    ECHO Wscript.StdOut.WriteLine (GetObject("winmgmts:root\cimv2:Win32_OperatingSystem=@").LocalDateTime)>"%_TMP%\get_time_local-helper.vbs"
    FOR /F "usebackq tokens=*" %%x IN (`cscript //B //NoLogo "%_TMP%\get_time_local-helper.vbs"`) DO (SET DT=%%x & GOTO getTime_Parse)
    :getTime_Parse
      SET _RET=
      IF "%1" EQU "" (
        SET _RET=%DT:~0,4%%DELIM%%DT:~4,2%%DELIM%%DT:~6,2%%DELIM%%DT:~8,2%%DELIM%%DT:~10,2%%DELIM%%DT:~12,2%%DELIM%%DT:~15,3%
      ) ELSE (
        REM Not recognized format strings are ignored during parsing - no error is reported.
       :getTime_ParseLoop
         SET _VAL=
         IF "%1" EQU "YYYY" SET _VAL=%DT:~0,4%
         IF "%1" EQU "MM"   SET _VAL=%DT:~4,2%
         IF "%1" EQU "DD"   SET _VAL=%DT:~6,2%
         IF "%1" EQU "hh"   SET _VAL=%DT:~8,2%
         IF "%1" EQU "mm"   SET _VAL=%DT:~10,2%
         IF "%1" EQU "ss"   SET _VAL=%DT:~12,2%
         IF "%1" EQU "ms"   SET _VAL=%DT:~15,3%
         IF DEFINED _VAL (
           IF DEFINED _RET (
             SET _RET=!_RET!%DELIM%!_VAL!
           ) ELSE (
             SET _RET=!_VAL!
           )
         )
         SHIFT
         IF "%1" NEQ "" GOTO getTime_ParseLoop
      )
  ENDLOCAL & SET RETURN=%_RET%
GOTO :EOF

1

প্রারম্ভিক পরিবর্তনশীল প্রসারণ এড়াতে একটি দুর্দান্ত একক-লাইন কৌশল ব্যবহার করা হয় cmd /c echo ^%time^%

cmd /c echo ^%time^% & dir /s somelongcommand & cmd /c echo ^%time^%

0
:: =============================================================
:: Batch file to display Date and Time seprated by undescore.
:: =============================================================
:: Read the system date.
:: =============================================================
@SET MyDate=%DATE%
@SET MyDate=%MyDate:/=:%
@SET MyDate=%MyDate:-=:%
@SET MyDate=%MyDate: =:%
@SET MyDate=%MyDate:\=:%
@SET MyDate=%MyDate::=_%
:: =============================================================
:: Read the system time.
:: =============================================================
@SET MyTime=%TIME%
@SET MyTime=%MyTime: =0%
@SET MyTime=%MyTime:.=:%
@SET MyTime=%MyTime::=_%
:: =============================================================
:: Build the DateTime string.
:: =============================================================
@SET DateTime=%MyDate%_%MyTime%
:: =============================================================
:: Display the Date and Time as it is now.
:: =============================================================
@ECHO MyDate="%MyDate%" MyTime="%MyTime%" DateTime="%DateTime%"
:: =============================================================
:: Wait before close.
:: =============================================================
@PAUSE
:: =============================================================

0

ফাইল নেমে ব্যবহারের জন্য সংখ্যার তারিখের জন্য খুব সাধারণ সমাধানের জন্য নিম্নলিখিত কোডটি ব্যবহার করুন:

set month=%date:~4,2%
set day=%date:~7,2%
set curTimestamp=%month%%day%%year%

rem then the you can add a prefix and a file extension easily like this
echo updates%curTimestamp%.txt

0

স্ল্যাশ দ্বারা তারিখ কমান্ডের ফলাফলগুলি বিভক্ত করুন, তারপরে আপনি প্রতিটি টোকেনকে উপযুক্ত ভেরিয়েবলগুলিতে স্থানান্তর করতে পারেন।

FOR /F "tokens=1-3 delims=/" %%a IN ("%date:~4%") DO (
SET _Month=%%a
SET _Day=%%b
SET _Year=%%c
)
ECHO Month %_Month%
ECHO Day %_Day%
ECHO Year %_Year%
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.