windows - উইন্ডোজ কমান্ড লাইনে বর্তমান ডেটটাইম কীভাবে ফাইলের নাম ব্যবহার করার জন্য উপযুক্ত ফরম্যাটে পেতে পারি?



datetime command-line (18)

হালনাগাদ: এখন 2016 এর জন্য আমি পাওয়ারশেল ব্যবহার করবো যদি না এটির জন্য সত্যিই পিছিয়ে থাকা-উপযুক্ত কারণ রয়েছে, বিশেষ করে date ব্যবহারের সাথে আঞ্চলিক সেটিংস সমস্যাগুলির কারণে। @ Npocmaka এর https://stackoverflow.com/a/19799236/8479

একটি উইন্ডোজ কমান্ড লাইন বিবৃতি (গুলি) আমি কোনও ফরমনামে রাখতে পারি এমন একটি বিন্যাসে বর্তমান ডেটটাইম পেতে কি ব্যবহার করতে পারি?

আমি একটি .bat ফাইল থাকতে চাই যা নামের একটি অংশ হিসাবে বর্তমান তারিখ এবং সময় সহ একটি আর্কাইভে একটি ডিরেক্টরি Code_2008-10-14_2257.zip , উদাহরণস্বরূপ, Code_2008-10-14_2257.zip । মেশিনের আঞ্চলিক সেটিংস থেকে স্বাধীন কোনো উপায় আছে কি?

আমি তারিখের বিন্যাস সম্পর্কে সত্যিই কিছু মনে করি না, আদর্শভাবে এটি yyy-mm-dd হতে পারে, তবে কিছু সহজ।

এ পর্যন্ত আমি এটি পেয়েছি, যা আমার মেশিনে আমাকে Tue_10_14_2008_230050_91 দেয়:

rem Get the datetime in a format that can go in a filename.
set _my_datetime=%date%_%time%
set _my_datetime=%_my_datetime: =_%
set _my_datetime=%_my_datetime::=%
set _my_datetime=%_my_datetime:/=_%
set _my_datetime=%_my_datetime:.=_%

rem Now use the timestamp by in a new ZIP file name.
"d:\Program Files\7-Zip\7z.exe" a -r Code_%_my_datetime%.zip Code

আমি এই সঙ্গে বসবাস করতে পারেন, কিন্তু এটি একটি সামান্য ছদ্মবেশী মনে হয়। আদর্শভাবে এটি briefer হতে হবে এবং আগে উল্লিখিত বিন্যাস আছে।

আমি উইন্ডোজ সার্ভার 2003 এবং উইন্ডোজ এক্সপি প্রফেশনাল ব্যবহার করছি। আমি এই অর্জনের জন্য অতিরিক্ত ইউটিলিটি ইনস্টল করতে চাই না (যদিও আমি বুঝতে পারি যে এমন কিছু আছে যা সুন্দর তারিখ ফর্ম্যাটিং করবে)।

https://src-bin.com


Answer #1

আঞ্চলিক স্বাধীন তারিখ সময় পার্সিং

%DATE% এর আউটপুট ফর্ম্যাট এবং dir কমান্ডটি আঞ্চলিকভাবে নির্ভরশীল এবং এভাবে শক্তিশালী বা স্মার্ট নয়। date.exe ( date.exe অংশ) কোনো চিন্তাশীল বিন্যাসে কোন তারিখ এবং সময় তথ্য বিতরণ করে। আপনি date.exe দিয়ে যে কোনও ফাইল থেকে তারিখ / সময় তথ্যও বের করতে পারেন।

উদাহরণ: (একটি cmd-script% এর পরিবর্তে %% ব্যবহার করুন)

date.exe +"%Y-%m-%d"
2009-12-22

date.exe +"%T"
18:55:03

date.exe +"%Y%m%d %H%M%S: Any text"
২009-12২২ 185503: কোনও পাঠ্য

date.exe +"Text: %y/%m/%d-any text-%H.%M"
পাঠ্য: 09/12/22-যেকোনো পাঠ্য-18.55

Command: date.exe +"%m-%d """%H %M %S """"
07-22 "18:55:03" `

একটি রেফারেন্স ফাইল থেকে তারিখ / সময় তথ্য:
date.exe -rc:\file.txt +"The timestamp of file.txt is: %Y-%m-%d %H:%M:%S"

বছরের, মাস, দিন, সময় তথ্য পেতে একটি সিএমডি স্ক্রিপ্ট ব্যবহার করে:

for /f "tokens=1,2,3,4,5,6* delims=," %%i in ('C:\Tools\etc\date.exe +"%%y,%%m,%%d,%%H,%%M,%%S"') do set yy=%%i& set mo=%%j& set dd=%%k& set hh=%%l& set mm=%%m& set ss=%%n

কোনও প্রয়োজনীয় বিন্যাসে টাইমস্ট্যাম্প পেতে একটি সিএমডি স্ক্রিপ্ট ব্যবহার করে:

for /f "tokens=*" %%i in ('C:\Tools\etc\date.exe +"%%y-%%m-%%d %%H:%%M:%%S"') do set timestamp=%%i

কোন রেফারেন্স ফাইল থেকে তারিখ / সময় তথ্য নিষ্কাশন।

for /f "tokens=1,2,3,4,5,6* delims=," %%i in ('C:\Tools\etc\date.exe -r file.txt +"%%y,%%m,%%d,%%H,%%M,%%S"') do set yy=%%i& set mo=%%j& set dd=%%k& set hh=%%l& set mm=%%m& set ss=%%n

একটি ফাইল তার তারিখ / সময় তথ্য যোগ করা হচ্ছে:

for /f "tokens=*" %%i in ('C:\Tools\etc\date.exe -r file.txt +"%%y-%%m-%%d.%%H%%M%%S"') do ren file.txt file.%%i.txt

date.exe date.exe যা কোন সংস্থানের প্রয়োজন নেই।

দ্রষ্টব্য: অনুসন্ধানের যে কোনও ডিরেক্টরিতে date.exe অনুলিপি করা অন্যান্য স্ক্রিপ্টগুলি ব্যর্থ হতে পারে যা উইন্ডোজ বিল্ট-ইন date কমান্ড ব্যবহার করে।


Answer #2

আমি থেকে ব্যাচ ফাইলের সাথে উত্তরটি পরিবর্তন তাই এটি ডাচ ভাষার সাথেও কাজ করে।
ডাচ - আমাদের মতোই চলছে - %date% , date/t এবং মূল ব্যাচ-ফাইলটি ভাঙ্গার %date% মধ্যে কয়েকটি পরিবর্তন রয়েছে।

এটি ভাল হবে যদি কিছু লোক উইন্ডোজ লোকেলের বিরুদ্ধে এটি পরীক্ষা করে দেখতে পারে এবং ফলাফলগুলি রিপোর্ট করে।
আপনার অবস্থানে ব্যাচ-ফাইল ব্যর্থ হলে, কমান্ড প্রম্পটে এই দুটি বিবৃতিগুলির আউটপুট অন্তর্ভুক্ত করুন:
echo:^|date
date/t

এই আউটপুটের নমুনাটি আপনাকে ব্যাচ-ফাইল থেকে পাওয়া উচিত:

C:\temp>set-date-cmd.bat
Today is Year: [2011] Month: [01] Day: [03]
20110103

এখানে সংশোধিত কোডটি কেন মন্তব্য করে:

:: https://.com/questions/203090/how-to-get-current-datetime-on-windows-command-line-in-a-suitable-format-for-usi
:: Works on any NT/2k machine independent of regional date settings
::
:: 20110103 - adapted by [email protected] for Dutch locale
:: Dutch will get jj as year from echo:^|date, so the '%%c' trick does not work as it will fill 'jj', but we want 'yy'
:: luckily, all countries seem to have year at the end: http://en.wikipedia.org/wiki/Calendar_date
::            set '%%c'=%%k
::            set 'yy'=%%k
::
:: In addition, date will display the current date before the input prompt using dashes
:: in Dutch, but using slashes in English, so there will be two occurances of the outer loop in Dutch
:: and one occurence in English.
:: This skips the first iteration:
::        if "%%a" GEQ "A"
::
:: echo:^|date
:: Huidige datum: ma 03-01-2011
:: Voer de nieuwe datum in: (dd-mm-jj)
:: The current date is: Mon 01/03/2011
:: Enter the new date: (mm-dd-yy)
::
:: date/t
:: ma 03-01-2011
:: Mon 01/03/2011
::
:: The assumption in this batch-file is that echo:^|date will return the date format
:: using either mm and dd or dd and mm in the first two valid tokens on the second line, and the year as the last token.
::
:: The outer loop will get the right tokens, the inner loop assigns the variables depending on the tokens.
:: That will resolve the order of the tokens.
::
@ECHO off
    set v_day=
    set v_month=
    set v_year=

    SETLOCAL ENABLEEXTENSIONS
    if "%date%A" LSS "A" (set toks=1-3) else (set toks=2-4)
::DEBUG echo toks=%toks%
      for /f "tokens=2-4 delims=(-)" %%a in ('echo:^|date') do (
::DEBUG echo first token=%%a
        if "%%a" GEQ "A" (
          for /f "tokens=%toks% delims=.-/ " %%i in ('date/t') do (
            set '%%a'=%%i
            set '%%b'=%%j
            set 'yy'=%%k
          )
        )
      )
      if %'yy'% LSS 100 set 'yy'=20%'yy'%
      set Today=%'yy'%-%'mm'%-%'dd'%

    ENDLOCAL & SET v_year=%'yy'%& SET v_month=%'mm'%& SET v_day=%'dd'%

    ECHO Today is Year: [%V_Year%] Month: [%V_Month%] Day: [%V_Day%]
    set datestring=%V_Year%%V_Month%%V_Day%
    echo %datestring%

    :EOF

--jeroen


Answer #3

আমি যা ব্যবহার করেছি তা হল:

::Date Variables - replace characters that are not legal as part of filesystem file names (to produce name like "backup_04.15.08.7z")
SET DT=%date%
SET DT=%DT:/=.%
SET DT=%DT:-=.%

আপনি যদি 7-জিপ সংরক্ষণাগারগুলিতে ব্যাকআপগুলি স্বয়ংক্রিয়ীকরণের আরও ধারনা চান তবে আমার কাছে একটি মুক্ত / খোলা প্রকল্প রয়েছে যা আপনি ব্যবহার করতে পারেন বা ধারনাগুলির জন্য পর্যালোচনা করতে পারেন: http://wittman.org/ziparcy/


Answer #4

আরেকটি উপায় ( credit ):

@For /F "tokens=2,3,4 delims=/ " %%A in ('Date /t') do @( 
    Set Month=%%A
    Set Day=%%B
    Set Year=%%C
)

@echo DAY = %Day%
@echo Month = %Month%
@echo Year = %Year%

মনে রাখবেন যে এখানে আমার উত্তরগুলি উভয় আঞ্চলিক সেটিংস দ্বারা নির্ধারিত দিনে এবং মাসের ক্রম অনুসারে নির্ভরশীল - এই বিষয়ে কিভাবে কাজ করবেন তা নিশ্চিত না।


Answer #5

এখানে alt.msdos.batch.nt থেকে একটি বৈকল্পিক রয়েছে যা স্থানীয়ভাবে স্বাধীনভাবে কাজ করে।

এটি একটি টেক্সট ফাইলে রাখুন, যেমন getDate.cmd

-----------8<------8<------------ snip -- snip ----------8<-------------
    :: Works on any NT/2k machine independent of regional date settings
    @ECHO off
    SETLOCAL ENABLEEXTENSIONS
    if "%date%A" LSS "A" (set toks=1-3) else (set toks=2-4)
    for /f "tokens=2-4 delims=(-)" %%a in ('echo:^|date') do (
      for /f "tokens=%toks% delims=.-/ " %%i in ('date/t') do (
        set '%%a'=%%i
        set '%%b'=%%j
        set '%%c'=%%k))
    if %'yy'% LSS 100 set 'yy'=20%'yy'%
    set Today=%'yy'%-%'mm'%-%'dd'% 
    ENDLOCAL & SET v_year=%'yy'%& SET v_month=%'mm'%& SET v_day=%'dd'%

    ECHO Today is Year: [%V_Year%] Month: [%V_Month%] Day: [%V_Day%]

    :EOF
-----------8<------8<------------ snip -- snip ----------8<-------------

Sans error msg এর থেকে stderr কাজ করার কোডটি পেতে, আমাকে একক উদ্ধৃতি যোগ করতে হয়েছিল যাতে %% a, %% b এবং %% c এর জন্য পরিবর্তনশীল বরাদ্দকরণ করা হয়। আমার লোকেল (পিটি) লুপিং / পার্সিংয়ে এক পর্যায়ে ত্রুটি সৃষ্টি করছিল যেখানে "সেট = ২0" মতো উপাদানগুলি কার্যকর হচ্ছে। কোটগুলি বরাদ্দ বিবৃতির বাম দিকের জন্য একটি টোকেন (খালি থাকা সত্ত্বেও) প্রদান করে।

নিম্নগামী নোংরা লোকেল পরিবর্তনশীল নাম: 'yy', 'mm' এবং 'dd'। কিন্তু হে, কে কেয়ার!


Answer #6

এখানে একটি একক লাইনের তারিখ সময় পেতে একটি উপায়:

for /f "tokens=2,3,4,5,6 usebackq delims=:/ " %a in ('%date% %time%') do echo %c-%a-%b %d%e

মার্কিন যুক্তরাষ্ট্রে এই আউটপুট "yyyy-mm-dd hhmm" হবে। বিভিন্ন আঞ্চলিক সেটিংসের ফলে% তারিখ% আউটপুট ভিন্ন হবে, তবে আপনি টোকেন অর্ডারটি সংশোধন করতে পারেন।

যদি আপনি একটি ভিন্ন বিন্যাস চান, টোকেনগুলি পুনর্বিন্যাস করে বা বিভিন্ন (বা কোন) বিভাজকগুলি ব্যবহার করে ইকো স্টেটমেন্টটি সংশোধন করুন।


Answer #7

এবং এখানে সময় অংশ জন্য একটি অনুরূপ ব্যাচ ফাইল।

:: http://.com/questions/203090/how-to-get-current-datetime-on-windows-command-line-in-a-suitable-format-for-usi
:: Works on any NT/2k machine independent of regional time settings
::
:: Gets the time in ISO 8601 24-hour format
::
:: Note that %time% gets you fractions of seconds, and time /t doesn't, but gets you AM/PM if your locale supports that.
:: Since ISO 8601 does not care about AM/PM, we use %time%
::
    @ECHO off
    SETLOCAL ENABLEEXTENSIONS
    for /f "tokens=1-4 delims=:,.-/ " %%i in ('echo %time%') do (
      set 'hh'=%%i
      set 'mm'=%%j
      set 'ss'=%%k
      set 'ff'=%%l)
    ENDLOCAL & SET v_Hour=%'hh'%& SET v_Minute=%'mm'%& SET v_Second=%'ss'%& SET v_Fraction=%'ff'%

    ECHO Now is Hour: [%V_Hour%] Minute: [%V_Minute%] Second: [%v_Second%] Fraction: [%v_Fraction%]
    set timestring=%V_Hour%%V_Minute%%v_Second%.%v_Fraction%
    echo %timestring%

    :EOF

--jeroen


Answer #8

কমান্ড লাইনে বর্তমান দিন পেতে নিম্নলিখিত স্ক্রিপ্ট ব্যবহার করুন:

echo %Date:~0,3%day

Answer #9

শুধু এই লাইন ব্যবহার করুন:

PowerShell -Command "get-date"

Answer #10

সংক্ষিপ্ত উত্তর :

 :: Start - Run , type:
 cmd /c "powershell get-date -format ^"{yyyy-MM-dd HH:mm:ss}^"|clip"

 :: click into target media, Ctrl + V to paste the result 

দীর্ঘ উত্তর

    @echo off
    :: START USAGE  ==================================================================
    ::SET THE NICETIME 
    :: SET NICETIME=BOO
    :: CALL GetNiceTime.cmd 

    :: ECHO NICETIME IS %NICETIME%

    :: echo nice time is %NICETIME%
    :: END USAGE  ==================================================================

    echo set hhmmsss
    :: this is Regional settings dependant so tweak this according your current settings
    for /f "tokens=1-3 delims=:" %%a in ('echo %time%') do set hhmmsss=%%a%%b%%c 
    ::DEBUG ECHO hhmmsss IS %hhmmsss%
    ::DEBUG PAUSE
    echo %yyyymmdd%
        :: this is Regional settings dependant so tweak this according your current settings
    for /f "tokens=1-3 delims=." %%D in ('echo %DATE%') do set  yyyymmdd=%%F%%E%%D
    ::DEBUG ECHO yyyymmdd IS %yyyymmdd%
    ::DEBUG PAUSE


    set NICETIME=%yyyymmdd%_%hhmmsss%
    ::DEBUG echo THE NICETIME IS %NICETIME%

    ::DEBUG PAUSE

Answer #11

date.exe

"Date.exe" নামে কিছু জিনিসের জন্য জিপ ফাইলের ভিতরে দেখুন এবং "DateFormat.exe" (বিরোধগুলি এড়ানোর জন্য) এর নামকরণ করুন।

আপনার উইন্ডোজ system32 ফোল্ডারে রাখুন।

এটি অনেক "তারিখ আউটপুট" বিকল্প আছে।

সাহায্যের জন্য, ব্যবহার করুন DateFormat.exe --h

আমি নিশ্চিত নই যে কিভাবে আপনি এটি আউটপুটটিকে পরিবেশ পরিবেশে রূপান্তর করবেন ... SET ব্যবহার করে।


Answer #12

wmic উপর ভিত্তি করে একটি ফাংশন:

:Now  -- Gets the current date and time into separate variables
::    %~1: [out] Year
::    %~2: [out] Month
::    %~3: [out] Day
::    %~4: [out] Hour
::    %~5: [out] Minute
::    %~6: [out] Second
  setlocal
  for /f %%t in ('wmic os get LocalDateTime ^| findstr /b [0-9]') do set T=%%t
  endlocal & (
    if "%~1" neq "" set %~1=%T:~0,4%
    if "%~2" neq "" set %~2=%T:~4,2%
    if "%~3" neq "" set %~3=%T:~6,2%
    if "%~4" neq "" set %~4=%T:~8,2%
    if "%~5" neq "" set %~5=%T:~10,2%
    if "%~6" neq "" set %~6=%T:~12,2%
  )
goto:eof

উল্টো: অঞ্চল স্বাধীন। ডাউনসাইড: শুধুমাত্র সিস্টেম অ্যাডমিনিস্ট্রেটররা wmic.exe চালাতে পারে।

ব্যবহার:

call:Now Y M D H N S
echo %Y%-%M%-%D% %H%:%N%:%S%

এই echos এই মত একটি স্ট্রিং:

2014-01-22 12:51:53

ফাংশন প্যারামিটার আউট-পরামিতিগুলি মনে রাখবেন - অর্থাৎ, আপনাকে অবশ্যই পরিবর্তে পরিবর্তনশীল নাম সরবরাহ করতে হবে।

সমস্ত প্যারামিটারগুলি ঐচ্ছিক, তাই call:Now YM কেবল বছরের এবং মাস পেতে চাইলে call:Now YM একটি বৈধ কল।


Answer #13

আঞ্চলিক স্বাধীন সমাধান ISO তারিখ বিন্যাস তৈরি করে:

rem save the existing format definition
for /f "skip=2 tokens=3" %%a in ('reg query "HKCU\Control Panel\International" /v sShortDate') do set FORMAT=%%a
rem set ISO specific format definition
reg add "HKCU\Control Panel\International" /v sShortDate /t REG_SZ /f /d yyyy-MM-dd 1>nul:
rem query the date in the ISO specific format 
set ISODATE=%DATE%
rem restore previous format definition
reg add "HKCU\Control Panel\International" /v sShortDate /t REG_SZ /f /d %FORMAT% 1>nul:

কি এখনও অপ্টিমাইজ করা যেতে পারে: সংশোধন করা হয় যখন স্বল্প সময়ের মধ্যে তারিখ বিন্যাস ব্যবহার করে অন্যান্য প্রসেস বিভ্রান্ত হতে পারে। সুতরাং বিদ্যমান বিন্যাস স্ট্রিং অনুযায়ী আউটপুট পার্সিং 'নিরাপদ' হতে পারে - তবে আরো জটিল হবে


Answer #14

উইন্ডোজ 7 দিয়ে, এই কোডটি আমার জন্য কাজ করে:

SET DATE=%date%
SET YEAR=%DATE:~0,4%
SET MONTH=%DATE:~5,2%
SET DAY=%DATE:~8,2%
ECHO %YEAR%
ECHO %MONTH%
ECHO %DAY%

SET DATE_FRM=%YEAR%-%MONTH%-%DAY% 
ECHO %DATE_FRM%

Answer #15

আমারও একই সমস্যা ছিল। আমার একটি এনক্রিপ্ট হওয়া ফাইলের FTP সার্ভার থেকে একটি স্বয়ংক্রিয় দৈনিক ডাউনলোড আছে। আমি gpg ব্যবহার করে ফাইলটি ডিক্রিপ্ট করতে চাই, ফাইলটিকে বর্তমান তারিখ (YYYYMMDD ফর্ম্যাট) এ পুনঃনামকরণ করুন এবং ডিক্রিপ্টেড ফাইলটি সঠিক বিভাগের জন্য একটি ফোল্ডারে ফেলে দিন।

আমি তারিখ অনুসারে ফাইলটি পুনঃনামকরণের জন্য বেশ কয়েকটি পরামর্শ দিয়েছিলাম এবং আমি এই সহজ সমাধানটি স্থগিত না হওয়া পর্যন্ত ভাগ্যবান ছিলাম না।

for /f "tokens=1-5 delims=/ " %%d in ("%date%") do rename "decrypted.txt" %%g-%%e-%%f.txt

এটি পুরোপুরি কাজ করেছে (অর্থাত্, ফাইল নামটি "2011-06-14.txt" হিসাবে এসেছে)।

(Source)


Answer #16

আমি ইতিমধ্যে উল্লিখিত অনেক উপায় আছে জানি। কিন্তু এটা কিভাবে এটি সম্পন্ন করা হয় তা বুঝতে নিচে ভাঙ্গার আমার উপায়। আশা করি, এটি এমন একজনের পক্ষে সহায়ক, যিনি ধাপে ধাপে ধাপ পছন্দ করেন।

:: Check your local date format
echo %date%

    :: Output is Mon 08/15/2016

:: get day (start index, number of characters)
::         (index starts with zero)
set myday=%DATE:~0,4%
echo %myday%
    :: output is Mon 

:: get month
set mymonth=%DATE:~4,2%
echo %mymonth%
    :: output is 08

:: get date 
set mydate=%DATE:~7,2% 
echo %mydate%
    :: output is 15

:: get year
set myyear=%DATE:~10,4%
echo %myyear%
    :: output is 2016

Answer #17

কার্যকরী ফর্ম রেফারেন্স জন্য, একটি পরিচিত এলাকা দেওয়া। ECHOTIMESTAMPকল দেখায় কিভাবে একটি পরিবর্তনশীল মধ্যে টাইমস্ট্যাম্প পেতে ( DTSএই উদাহরণে।)

@ECHO off

CALL :ECHOTIMESTAMP
GOTO END

:TIMESTAMP
SETLOCAL  EnableDelayedExpansion
    SET DATESTAMP=!DATE:~10,4!-!DATE:~4,2!-!DATE:~7,2!
    SET TIMESTAMP=!TIME:~0,2!-!TIME:~3,2!-!TIME:~6,2!
    SET DTS=!DATESTAMP: =0!-!TIMESTAMP: =0!
ENDLOCAL & SET "%~1=%DTS%"
GOTO :EOF

:ECHOTIMESTAMP
SETLOCAL
    CALL :TIMESTAMP DTS
    ECHO %DTS%
ENDLOCAL
GOTO :EOF

:END

EXIT /b 0

এবং ফাইল, timestamp.bat সংরক্ষিত, এখানে আউটপুট:


Answer #18
"d:\Program Files\7-Zip\7z.exe" a -r code_%date:~10,4%-%date:~4,2%-%date:~7,2%.zip




batch-file