উইন্ডোজ কমান্ড লাইনে কোনও ফাইল / ফোল্ডারের নাম ব্যবহারের জন্য উপযুক্ত বিন্যাসে আমি কীভাবে বর্তমান তারিখ / সময় পেতে পারি?


539

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


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

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

তারিখের ফর্ম্যাটটি সম্পর্কে আমি আসলেই কিছু মনে করি না, আদর্শভাবে এটি yyyy-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

আমি এটি নিয়ে বাঁচতে পারি তবে এটি কিছুটা জটিল বলে মনে হচ্ছে। আদর্শভাবে এটি সম্মোহক হতে হবে এবং পূর্বে উল্লিখিত ফর্ম্যাটটি থাকতে হবে।

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


7
আপনার কোডের জন্য একটি স্বয়ংক্রিয় ব্যাকআপ তৈরি করছেন? তোমার জন্য ভালো! আমাদেরও এটি করা উচিত :)
আন্দ্রে রেনিয়া

24
পাওয়ারশেল লোকেদের ব্যবহার করুন ...[datetime]::now.tostring("yyyy-MM-dd")
- মনিকা

এসকিউএল সার্ভারে এক্সপি_সিমিডেল ব্যবহার করে তৈরি তারিখের সাথে ফাইলগুলি লোড করা সম্ভব? আমি Stackoverflow একটি প্রশ্ন জিজ্ঞাসা করেছি, কল্যাণকামী লিংক দেখতে দয়া করে @ stackoverflow.com/q/32293517/3327081
kolunar

উত্তর:


667

এমএমডিডিওয়াইওয়াই ফর্ম্যাটে বর্তমান তারিখ পেতে উইন্ডোজ ব্যাচ ফাইল (.bat) দেখুন :

@echo off
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)
echo %mydate%_%mytime%

আপনি যদি 24 ঘন্টা / সামরিক বিন্যাসে সময় পছন্দ করেন তবে আপনি দ্বিতীয় ফর লাইনটি এটির সাথে প্রতিস্থাপন করতে পারেন:

For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a%%b)

সি:> \ date.bat।
2008-10-14_0642

আপনি যদি অঞ্চলটি দিন / মাসের আদেশের স্বতন্ত্রভাবে তারিখটি চান তবে আপনি আইএসও আদেশে যেহেতু উত্স হিসাবে "ডাব্লুএমআইসি ওএস জিইটি লোকালডেটটাইম" ব্যবহার করতে পারেন:

@echo off
for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j
set ldt=%ldt:~0,4%-%ldt:~4,2%-%ldt:~6,2% %ldt:~8,2%:%ldt:~10,2%:%ldt:~12,6%
echo Local date is [%ldt%]

সি:> টেস্ট.কমের
স্থানীয় তারিখ [2012-06-19 10: 23: 47.048]


44
যুক্তরাজ্যের লোকদের জন্য আপনি For /f "tokens=1-3 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%b-%%a)দ্বিতীয় লাইনের জন্য চাইবেন ।
ররি

17
এই সমাধানটি স্থানীয়ভাবে নির্ভরশীল, ররি ইউকেলে অন্যান্য লোকেলগুলির উদাহরণ দিয়েছেন যেখানে তারিখটি 22-02-2012 হিসাবে আসে আপনি ডিলিমস = / ডিলিমস = সহ প্রতিস্থাপন করতে হবে -
নুনো

25
আমার সিস্টেমে% TIME% "0:01:15" এবং "3:15:12" এর মতো মানগুলি প্রদান করে এবং উত্তরে %% a %% বি কোড "001" এবং "315" এর মতো একটি শীর্ষস্থানীয় স্থান দেয়। চার অঙ্কের এইচএমএম পেতে এটি ব্যবহার করুন: For /f "tokens=1-2 delims=/: " %%a in ("%TIME%") do (if %%a LSS 10 (set mytime=0%%a%%b) else (set mytime=%%a%%b))এটি "0001" এবং "0315" এর মতো মানগুলি দেয় যা আমি আমার ফাইলের নামগুলিতে পছন্দ করি।
twamley

10
wmicকমান্ডের দুর্দান্ত সংস্করণ ! এখনও পর্যন্ত আমি কেবল দেখেছি WMIC Path Win32_LocalTime Get Day,Hour,Minute,Month,Second,Year /Format:table। একইভাবে, 20120623-1619আমার স্থানীয় আমস্টারডাম সময় অঞ্চলটি পেতে, এক লাইনে:for /f %%a in ('wmic os get LocalDateTime ^| findstr ^[0-9]') do (set ts=%%a) & set datetime=%ts:~0,8%-%ts:~8,4%
আরজান

5
আমার জন্য এটি বলে%%a was unexpected at this time.
স্কট zuz22 ব্ল্যাকলক

109

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

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

উদাহরণ: (একটি সিএমডি স্ক্রিপ্টে% এর পরিবর্তে %% ব্যবহার করুন)

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

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

date.exe +"%Y%m%d %H%M%S: Any text"
20091222 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 -r c:\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কমান্ড ব্যবহার করে ।


4
উপরের বিস্ময়করভাবে আরও জনপ্রিয় সমাধানের চেয়ে অনেক ভাল তবে উইন্ডোজ 8.1 এ প্রম্পটটি এড়াতে আমাকে যুক্ত করতে / টি করতে হয়েছিল
রেনব্বা

6
বিল্ট-ইন উইন্ডোজ 8.1 date.exeলোকাল নির্ভর বলে মনে হচ্ছে। এটি আমার সিস্টেমে dd / MM / yyyy এ তারিখটি ফেরত দেয়, এটি যদি স্থানীয়ভাবে স্বতন্ত্র হয় তবে আমি এমএম / ডিডি / ইয়িআই বা ইয়ি-এমএম-ডিডি আশা করতাম। আমি মনে করি না যে এই উত্তরটি বিল্ট-ইন তারিখ.এক্সইয়ের কথা বলছে তবে এর কয়েকটি তৃতীয় পক্ষের সংস্করণ।
এসএসএস

1
আপনি যদি কমান্ড লাইনে পছন্দসই বিন্যাসটি সরবরাহ করেন তবে এটি স্থানীয়ভাবে স্বতন্ত্র
Terrinecold

3
দয়া করে লক্ষ্য করুন যে তারিখ.এক্সে (আনক্সুটিলসের অংশ) বিল্ট-ইন তারিখ কমান্ডের মতো নয়। সুতরাং আপনাকে যুক্ত করতে / টি করতে হলে উইন্ডোজ ডেট কমান্ড কার্যকর করা হয়। যদি ডেট.এক্সে + "% Y-% m-% d" এর মতো কিছু কাজ করে তবে আপনি আনক্সুটিলগুলি সঠিকভাবে ইনস্টল করেছেন। :-)
just.do.it

এসকিউএল সার্ভারে এক্সপি_সিমিডেল ব্যবহার করে তৈরি তারিখের সাথে ফাইলগুলি লোড করা সম্ভব? আমি "ফরফিলস" কমান্ড চেষ্টা করেছি কিন্তু কোন ফলসই হয়নি। আমি Stackoverflow একটি প্রশ্ন জিজ্ঞাসা করেছি, কল্যাণকামী লিংক দেখতে দয়া করে @ stackoverflow.com/q/32293517/3327081
kolunar

103

সময় দুটি সেটিংসের উপর নির্ভর করে না এমন আরও দুটি উপায় (উভয় থেকেই নেওয়া হয়েছে : স্থানীয়করণ থেকে ডেটা / সময় কীভাবে আলাদা হয় :)। এবং উভয়ই সপ্তাহের দিন পান এবং তাদের কারওরই প্রশাসকের অনুমতি প্রয়োজন নেই !:

  1. মাকেকাব - প্রতিটি উইন্ডোজ সিস্টেমে কাজ করবে (দ্রুত, তবে একটি ছোট টেম্প ফাইল তৈরি করে) (ফক্সিড্রাইভ স্ক্রিপ্ট):

    @echo off
    pushd "%temp%"
    makecab /D RptFileName=~.rpt /D InfFileName=~.inf /f nul >nul
    for /f "tokens=3-7" %%a in ('find /i "makecab"^<~.rpt') do (
       set "current-date=%%e-%%b-%%c"
       set "current-time=%%d"
       set "weekday=%%a"
    )
    del ~.*
    popd
    echo %weekday% %current-date% %current-time%
    pause
    

    গেট-ডেট ফাংশন সম্পর্কে আরও তথ্য

  2. রোবকপি - এটি উইন্ডোজ এক্সপি এবং উইন্ডোজ সার্ভার 2003 এর নেটিভ কমান্ড নয়, তবে এটি মাইক্রোসফ্ট সাইট থেকে ডাউনলোড করা যেতে পারে । তবে উইন্ডোজ ভিস্তা এবং উপরের সমস্ত কিছু অন্তর্নির্মিত:

    @echo off
    setlocal
    for /f "skip=8 tokens=2,3,4,5,6,7,8 delims=: " %%D in ('robocopy /l * \ \ /ns /nc /ndl /nfl /np /njh /XF * /XD *') do (
     set "dow=%%D"
     set "month=%%E"
     set "day=%%F"
     set "HH=%%G"
     set "MM=%%H"
     set "SS=%%I"
     set "year=%%J"
    )
    
    echo Day of the week: %dow%
    echo Day of the month : %day%
    echo Month : %month%
    echo hour : %HH%
    echo minutes : %MM%
    echo seconds : %SS%
    echo year : %year%
    endlocal
    

    এবং আরও তিনটি উপায় যা অন্যান্য উইন্ডোজ স্ক্রিপ্ট ভাষা ব্যবহার করে। তারা আপনাকে আরও নমনীয়তা দেবে যেমন আপনি বছরের সপ্তাহ, মিলিসেকেন্ডে সময় পেতে পারেন।

  3. জেএসক্রিপ্ট / ব্যাচের সংকর (যেমন সংরক্ষণ করা দরকার .bat)। উইন্ডোজ স্ক্রিপ্ট হোস্টের অংশ হিসাবে এনটি এবং উপরের প্রতিটি সিস্টেমে জেএসক্রিপ্ট উপলব্ধ রয়েছে ( যদিও এটি একটি বিরল ক্ষেত্রে রেজিস্ট্রি দিয়ে অক্ষম করা যেতে পারে ):

    @if (@X)==(@Y) @end /* ---Harmless hybrid line that begins a JScript comment
    
    @echo off
    cscript //E:JScript //nologo "%~f0"
    exit /b 0
    *------------------------------------------------------------------------------*/
    
    function GetCurrentDate() {
            // Today date time which will used to set as default date.
            var todayDate = new Date();
            todayDate = todayDate.getFullYear() + "-" +
                           ("0" + (todayDate.getMonth() + 1)).slice(-2) + "-" +
                           ("0" + todayDate.getDate()).slice(-2) + " " + ("0" + todayDate.getHours()).slice(-2) + ":" +
                           ("0" + todayDate.getMinutes()).slice(-2);
    
            return todayDate;
        }
    
    WScript.Echo(GetCurrentDate());
    
  4. ভিএসসিআরটি / ব্যাচ হাইব্রিড ( কোনও অস্থায়ী ফাইল ব্যবহার না করে কোনও ব্যাচ ফাইলের মধ্যে ভিবিএস স্ক্রিপ্ট এম্বেড এবং সম্পাদন করা সম্ভব? ) জাস্ক্রিপ্টের মতো একই ক্ষেত্রে, তবে সংকরন এতটা নিখুঁত নয়:

    :sub echo(str) :end sub
    echo off
    '>nul 2>&1|| copy /Y %windir%\System32\doskey.exe %windir%\System32\'.exe >nul
    '& echo current date:
    '& cscript /nologo /E:vbscript "%~f0"
    '& exit /b
    
    '0 = vbGeneralDate - Default. Returns date: mm/dd/yy and time if specified: hh:mm:ss PM/AM.
    '1 = vbLongDate - Returns date: weekday, monthname, year
    '2 = vbShortDate - Returns date: mm/dd/yy
    '3 = vbLongTime - Returns time: hh:mm:ss PM/AM
    '4 = vbShortTime - Return time: hh:mm
    
    WScript.echo  Replace(FormatDateTime(Date,1),", ","-")
    
  5. পাওয়ারশেল - প্রতিটি মেশিনে ইনস্টল করা যেতে পারে যার কাছে নেট আছে - মাইক্রোসফ্ট ( v1 , v2 , v3 (শুধুমাত্র উইন্ডোজ 7 এবং উপরের জন্য)) থেকে ডাউনলোড করুন। এটি উইন্ডোজ 7 / উইন্ডোজ সার্ভার ২০০৮ এবং তারপরের সমস্ত কিছুতে ডিফল্টরূপে ইনস্টল করা আছে:

    C:\> powershell get-date -format "{dd-MMM-yyyy HH:mm}"
    

    ব্যাচ ফাইল থেকে এটি ব্যবহার করতে:

    for /f "delims=" %%# in ('powershell get-date -format "{dd-MMM-yyyy HH:mm}"') do @set _date=%%#
    
  6. স্ব-সংকলিত jscript.net/batch (। নেট ছাড়া উইন্ডোজ মেশিনটি কখনও দেখেনি, তাই আমি মনে করি এটি একটি সুন্দর বহনযোগ্য):

    @if (@X)==(@Y) @end /****** silent line that start JScript comment ******
    
    @echo off
    ::::::::::::::::::::::::::::::::::::
    :::       Compile the script    ::::
    ::::::::::::::::::::::::::::::::::::
    setlocal
    if exist "%~n0.exe" goto :skip_compilation
    
    set "frm=%SystemRoot%\Microsoft.NET\Framework\"
    
    :: Searching the latest installed .NET framework
    for /f "tokens=* delims=" %%v in ('dir /b /s /a:d /o:-n "%SystemRoot%\Microsoft.NET\Framework\v*"') do (
        if exist "%%v\jsc.exe" (
            rem :: the javascript.net compiler
            set "jsc=%%~dpsnfxv\jsc.exe"
            goto :break_loop
        )
    )
    echo jsc.exe not found && exit /b 0
    :break_loop
    
    
    call %jsc% /nologo /out:"%~n0.exe" "%~dpsfnx0"
    ::::::::::::::::::::::::::::::::::::
    :::       End of compilation    ::::
    ::::::::::::::::::::::::::::::::::::
    :skip_compilation
    
    "%~n0.exe"
    
    exit /b 0
    
    
    ****** End of JScript comment ******/
    import System;
    import System.IO;
    
    var dt=DateTime.Now;
    Console.WriteLine(dt.ToString("yyyy-MM-dd hh:mm:ss"));
    
  7. লগম্যান এটি সপ্তাহের বছর এবং দিন পেতে পারে না। এটি তুলনামূলকভাবে ধীরে ধীরে এবং একটি অস্থায়ী ফাইল তৈরি করে এবং লগম্যান তার লগ ফাইলগুলিতে রাখে এমন সময় স্ট্যাম্পগুলির উপর ভিত্তি করে। এটি উইন্ডোজ এক্সপি এবং উপরের সমস্ত কিছুতে কাজ করবে। এটি সম্ভবত আমার সাথে - কারও দ্বারা ব্যবহৃত হবে না তবে এটি আরও একটি উপায় ...

    @echo off
    setlocal
    del /q /f %temp%\timestampfile_*
    
    Logman.exe stop ts-CPU 1>nul 2>&1
    Logman.exe delete ts-CPU 1>nul 2>&1
    
    Logman.exe create counter ts-CPU  -sc 2 -v mmddhhmm -max 250 -c "\Processor(_Total)\%% Processor Time" -o %temp%\timestampfile_ >nul
    Logman.exe start ts-CPU 1>nul 2>&1
    
    Logman.exe stop ts-CPU >nul 2>&1
    Logman.exe delete ts-CPU >nul 2>&1
    for /f "tokens=2 delims=_." %%t in  ('dir /b %temp%\timestampfile_*^&del /q/f %temp%\timestampfile_*') do set timestamp=%%t
    
    echo %timestamp%
    echo MM: %timestamp:~0,2%
    echo dd: %timestamp:~2,2%
    echo hh: %timestamp:~4,2%
    echo mm: %timestamp:~6,2%
    
    endlocal
    exit /b 0
    
  8. ডাব্লুএমআইসির সাথে আরও একটি উপায় যা বছরের সপ্তাহ এবং সপ্তাহের দিন দেয়, তবে মিলিসেকেন্ড নয় (মিলিসেকেন্ডের জন্য ফক্সিড্রাইভের উত্তর পরীক্ষা করে দেখুন):

    for /f %%# in ('wMIC Path Win32_LocalTime Get /Format:value') do @for /f %%@ in ("%%#") do @set %%@
    echo %day%
    echo %DayOfWeek%
    echo %hour%
    echo %minute%
    echo %month%
    echo %quarter%
    echo %second%
    echo %weekinmonth%
    echo %year%
    
  9. বিভিন্ন ভাষার সেটিংসের সাথে দ্রুত এবং সামঞ্জস্যপূর্ণ হওয়ার জন্য কিছু প্রচেষ্টা সহ টাইপ্পেরএফ ব্যবহার করা :

    @echo off
    setlocal
    
    :: Check if Windows is Windows XP and use Windows XP valid counter for UDP performance
    ::if defined USERDOMAIN_roamingprofile (set "v=v4") else (set "v=")
    
    for /f "tokens=4 delims=. " %%# in ('ver') do if %%# GTR 5 (set "v=v4") else ("v=")
    set "mon="
    for /f "skip=2 delims=," %%# in ('typeperf "\UDP%v%\*" -si 0 -sc 1') do (
       if not defined mon (
          for /f "tokens=1-7 delims=.:/ " %%a in (%%#) do (
            set mon=%%a
            set date=%%b
            set year=%%c
            set hour=%%d
            set minute=%%e
            set sec=%%f
            set ms=%%g
          )
       )
    )
    echo %year%.%mon%.%date%
    echo %hour%:%minute%:%sec%.%ms%
    endlocal
    
  10. এমএসএইচটিএ উপরের # 3 তে প্রদর্শিত জাভাস্ক্রিপ্ট পদ্ধতির অনুরূপ জাভাস্ক্রিপ্ট পদ্ধতির কল করার অনুমতি দেয়। মনে রাখবেন যে জাভাস্ক্রিপ্টের তারিখ অবজেক্ট বৈশিষ্ট্যগুলি মাসের মানগুলিতে জড়িত 1 থেকে 12 নয়, 0 থেকে 11 পর্যন্ত গণনা করা হয়েছে So সুতরাং 9 টির মান একটি অক্টোবর means

    <!-- : Batch portion
    
    @echo off
    setlocal
    
    for /f "delims=" %%I in ('mshta "%~f0"') do set "now.%%~I"
    
    rem Display all variables beginning with "now."
    set now.
    
    goto :EOF
    
    end batch / begin HTA -->
    
    <script>
        resizeTo(0,0)
        var fso = new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1),
            now = new Date(),
            props=['getDate','getDay','getFullYear','getHours','getMilliseconds','getMinutes',
                'getMonth','getSeconds','getTime','getTimezoneOffset','getUTCDate','getUTCDay',
                'getUTCFullYear','getUTCHours','getUTCMilliseconds','getUTCMinutes','getUTCMonth',
                'getUTCSeconds','getYear','toDateString','toGMTString','toLocaleDateString',
                'toLocaleTimeString','toString','toTimeString','toUTCString','valueOf'],
            output = [];
    
        for (var i in props) {output.push(props[i] + '()=' + now[props[i]]())}
        close(fso.Write(output.join('\n')));
    </script>
    

2
পাওয়ারশেল সি এর জন্য: \> ইন / এফ %% i এর জন্য ('পাওয়ারসেল গেট-ডেট-ফর্ম্যাট "{ইয়াইএমএমডিডিএইচএমএস mm"') ডেটটাইম সেট করে = %% i সি: \> প্রতিধ্বনি% ডেটটাইম%
স্যামুয়েল

1
makecab: এটি নামক একটি ফাইল তৈরি করে ~.rptএবং এর stringঅভ্যন্তরে কোনও অনুসন্ধান করে makecab, যা একটি লাইনের মতো এটি দিয়ে কাজ করে MakeCAB Report: Tue Sep 02 22:15:57 2014। আমার জন্য এই আদেশটি স্থানীয়ভাবে স্থানীয় নয় independent এই কৌশলটি নির্ভর করে। আসুন আশা করি এটি কখনই হবে না, না হলে সাবধান!
n611x007

10
আমি 8 টি সমাধানের পরে "আরও দুটি ..." শুরুর পাঠ্যটি উপভোগ করছি।
অ্যাডাম স্মিথ

1
কি, কোন mshtaসংকর? :) মনে মনে যদি আমি আপনার উত্তর সম্পাদনা করি এবং একটি যুক্ত করি? এটি রহস্যজনক সমাধানগুলির সেরা সংগ্রহ বলে মনে হয় এবং মনে হয় এটি mshtaএখানে রয়েছে।
রোজ

1
গৃহীত সমাধানটি আমার জন্য কার্যকর হবে না আমি যতই চেষ্টা করি না কেন। এই সমাধানগুলির একাধিকটি আমার পক্ষে কাজ করেছিল। (ব্যাচ এবং পাওয়ারশেল)
ব্রেট

44

এখানে 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 ত্রুটির কোডটি স্টারারের সাথে কাজ করার জন্য, আমাকে একক উদ্ধৃতি যুক্ত করতে হয়েছিল%% a, %% বি এবং %% সি এর জন্য ভেরিয়েবল অ্যাসাইনমেন্ট তৈরি করা। আমার লোকেল (পিটি) লুপিং / পার্সিংয়ের এক পর্যায়ে ত্রুটি সৃষ্টি করছে যেখানে "সেট = 20" এর মতো জিনিস কার্যকর করা হচ্ছে। অ্যাসাইনমেন্ট স্টেটমেন্টের বাম-হাতের জন্য উদ্ধৃতিগুলি একটি টোকন দেয় (খালি হলেও) yield

ডাউনসাইড হ'ল অগোছালো লোকেলের ভেরিয়েবলের নাম: 'ইয়ে', 'মিমি' এবং 'ডিডি'। কিন্তু আরে, কে পাত্তা দেয়!


3
এটি নিখুঁত এবং আমি আজ পর্যন্ত দেখা সবচেয়ে সহজ এবং সবচেয়ে মার্জিত পদ্ধতির।
ডগ

2
আরও দেখুন Jeroen এর উন্নত বৈশিষ্ট্য , সব লোকেল স্ট্রিং ব্যবহার হিসাবে প্রয়োজন dd, mmএবং yyআউটপুট মধ্যে echo:^|date
আরজান

সমস্ত লোকালে কাজ করে না। (জার্মান ভাষায় , যেখানে আপনার স্ক্রিপ্টটি ভেঙে dateদেয় (প্রত্যাশা করে ))Geben Sie das neue Datum ein: (TT-MM-JJ)JJYY
স্টিফান

35

আমি এটি ব্যবহার করি (আবার অঞ্চলটি স্বাধীন নয় (যুক্তরাজ্য))

set bklog=%date:~6,4%-%date:~3,2%-%date:~0,2%_%time:~0,2%%time:~3,2%

এই অল্প পরিচিত তবে খুব দক্ষ কৌশলটিতে কোলন এবং টিলডির সাথে Cmd.exe পরিবেশগত পরিবর্তনগুলি দেখুন । (একটি মাইক্রোসফ্ট
অনুমোদনযোগ্য

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

এটি আমার পক্ষে বেশ কার্যকর নয়। আঞ্চলিক সেটিংসের সাথে এটি করার কিছু হতে পারে? বুধবার, 15 ই অক্টোবর, 2014 এ চালানোর সময় আমি "/ 15 / - 1-We_1009" এর আউটপুট পাই
জোয়েল বি

26

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

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"

set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%" & set "fullstamp=%YYYY%-%MM%-%DD%_%HH%%Min%-%Sec%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
echo fullstamp: "%fullstamp%"
pause

নিখুঁত, এটি আমার পক্ষে সেরা সমাধান হিসাবে পিএস কল করার ফলে মজার চেহারা দেখার জন্য সিএমডি পাঠ্যের উপস্থিতি ঘটবে।
স্টি

25

দুর্ভাগ্যক্রমে এটি আঞ্চলিক সেটিংস থেকে সুরক্ষিত নয়, তবে এটি আপনি যা চান তা তা করে।

set hour=%time:~0,2%
if "%time:~0,1%"==" " set hour=0%time:~1,1%
set _my_datetime=%date:~10,4%-%date:~4,2%-%date:~7,2%_%hour%%time:~3,2%

উইকিপিডিয়ায় আপনি যে জিনিসগুলি খুঁজে পেতে পারেন তা আশ্চর্যজনক ।


1
চিহ্ন - কোলন এবং টিলডির সাথে সিএমডি.এক্সে পরিবেশের পরিবর্তনশীলগুলি পাওয়া গেছে যা আপনার উত্তরটিতে প্রদর্শিত চলক 'স্লাইসিং' কৌশলটি বর্ণনা করে। উইকিপিডিয়া নিবন্ধে আর সেই তথ্য খুঁজে পাওয়া যাচ্ছে না। মাইক্রোসফ্ট থেকে একটি অনুমোদনযোগ্য রেফারেন্স খুঁজে পেতে চাই।
ডেভিডআরআর

1
উইন্ডোজ এক্সপির জন্য মাইক্রোসফ্টের ব্যাচের ফাইল রেফারেন্সটি এখানে । এই রেফারেন্সটিতে ব্যাচ পরামিতি ব্যবহার অন্তর্ভুক্ত রয়েছে । দুর্ভাগ্যক্রমে, 'কাটা' কৌশলটি নিয়ে কোনও আলোচনা নেই।
ডেভিডআরআর

18

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

echo %Date:~0,3%day

8
এটির সাথে কিছুটা খেলা
খেলেছি

15

অন্য উপায় ( 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%

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


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

http://www.dotnetperls.com/7-zip-examplesকিছু ভাল পয়েন্ট ভবিষ্যতে কারও জন্য কার্যকর হতে পারে।
সারাভানান

13

এটি সত্যিকারের উদ্রেককারী নয় তবে এটি আরও নমনীয় উপায় হতে পারে ( ক্রেডিট ):

FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE/T') DO SET CDATE=%%B
FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B
FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B
FOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('echo %CDATE%') DO SET yyyy=%%B
SET date=%mm%%dd%%yyyy%

10

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

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" আউটপুট দেবে। বিভিন্ন আঞ্চলিক সেটিংসের ফলে বিভিন্ন% তারিখ% আউটপুট আসে, তবে আপনি টোকেন ক্রমটি সংশোধন করতে পারেন।

আপনি যদি অন্য কোনও ফর্ম্যাট চান তবে টোকেনগুলি পুনরায় সাজিয়ে বা বিভিন্ন (বা না) বিভাজক ব্যবহার করে প্রতিধ্বনি বিবরণটি সংশোধন করুন।


12 ঘন্টা বিন্যাসে সময় পাওয়ার এবং এএম বা প্রধানমন্ত্রীর তথ্য প্রদর্শন করার জন্য কি কোনও উপায় আছে?
সাঙ্গলি

9

কেবল এই লাইনটি ব্যবহার করুন:

PowerShell -Command "get-date"

9

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

 :: 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

:: / সেমিডিতে / এফ% i-তে ('পাওয়ারশেল -কম্যান্ড "গেট-ডেট" -ফর্ম্যাট "ইয়াইএমএমডিডি"') করুন / ইয়াহ্মিএমডিডি =% i :: সেন্টিমিডি স্ক্রিপ্টে / এফ %% i এর জন্য ('পাওয়ারশেল -কম্যান্ড) "পেতে-ডেট" -format "YYYYMMDD" ') সেট করবেন YYYYMMDD = %% আমি
Yordan Georgiev

8

ওয়ান-লাইনারের তারিখ এবং সময় পাওয়ার জন্য ম্যাথিউ জনসনের ওয়ান-লাইনারের সমাধানটি সুস্পষ্ট এবং দরকারী।

তবে এটি একটি ব্যাচ ফাইলের মধ্যে থেকে কাজ করার জন্য একটি সাধারণ পরিবর্তন প্রয়োজন:

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

1
সিএমডিতে কাজ করে না (%% এই সময়ে অপ্রত্যাশিত ছিল) বা উইন্ডোজ 8.1 এর পাওয়ারশেলের (উদ্বোধন মিসিং ('কীওয়ার্ডের পরে)) মিস করবেন না
মিস করা আছে

3
রায়নাবা, সিএমডি লাইন থেকে আদেশটি জারি করা হলে আপনি ঠিক ত্রুটিটি পেয়ে যান । তবে, " একটি ব্যাচের ফাইলের মধ্যে থেকে ", কমান্ডটি "2014-01-30 1324" ফেরত দেয়।
জন ল্যাংস্টাফ

1
বা আরও সহজ লুপটি ছাড়াই হবেecho %date:/=-%%time::=-%
জেরহার্ড বার্নার্ড

7

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

:: http://stackoverflow.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


হাই, আমি নীচের কমান্ডটি ব্যবহার করে পরিবর্তিত তারিখ অনুযায়ী ফাইলগুলি লোড করতে সক্ষম হয়েছি, z: & forfiles /m *.jpg /s /d 07/16/2015 /c “cmd /c echo @fdate @ftime @path” তবে আমি কীভাবে তৈরি তারিখ অনুসারে ফাইলগুলি লোড করব তা জানতে চাই। কোন সাহায্য খুব প্রশংসা করা হবে। স্ট্যাকওভারফ্লোতে একটি প্রশ্ন জিজ্ঞাসা করা হয়েছে তবে এখনও কোনও উত্তর নেই। দয়া করে লিংক কটাক্ষপাত করা বিস্তারিত জানার জন্য stackoverflow.com/q/32293517/3327081
kolunar

1
সে সম্পর্কে একটি নতুন প্রশ্ন জিজ্ঞাসা করুন। আমি কখনও ব্যবহার করেছি forfiles
জেরোয়েন ওয়েয়ার্ট প্লুইমারস

7

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

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

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

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

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

:: /programming/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 jeroen@pluimers.com 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


2
কিছু কিছু বছর আগে ব্যবহার করে, বা নেতৃস্থানীয় শূন্যদের অভাব হয়; দেশ অনুযায়ী উইকিপিডিয়া তারিখ ফর্ম্যাট দেখুন । ফরাসিরা ভ্রমণের জন্য ব্যবহার করতে পারেjj-mm-aaaa ? ইটালিয়ানরা হয়ত gg/mm/aaaaজিওর্নো, মেসো, আনো? tt.mm.jjjjট্যাগ, মোনাত, জহরের জন্য জার্মানরা ? তবে তারপরে: আমার ধারণা বেশিরভাগ দেশে কেবল কয়েকটি ভাষা ব্যবহৃত হয়। নেদারল্যান্ডসের মতো প্রকৃতপক্ষে উইন্ডোজটি প্রায়শই ইংরেজি বা ডাচ হবে, অন্য কিছু নয়। আমার জন্য যথেষ্ট ভাল।
আরজান

2
একদিকে যেমন: উইন্ডোজ ব্যাচ ফাইলগুলির লুকানো বৈশিষ্ট্যগুলির অন্য সংস্করণটি কম নির্ভুল (ডাচদের জন্য ফিক্স প্রয়োজন jj, এবং এটি একটি 4 ডিজিট বছর কার্যকর করে না), তবে shiftদিনটিকে যেমন Monবা বাতিল করতে ব্যবহার করেma । একটু ভিন্ন.
আরজান

4
এটি একটি জার্মান সিস্টেমে ভেঙে যায়। বছর এবং মাসের কাজ, তবে দিন ব্যর্থ হয় কারণ "দিন" জার্মানিতে "টি" দিয়ে শুরু হয় ("ট্যাগ"), "ডি" নয়। প্রম্পট মধ্যে ফরম্যাট স্ট্রিং (TT-MM-JJ), date/tআউটপুট 23.06.2012। / সিসি @ আরজান
বলফা

2
অন্য একদিকে: কেউ ব্যবহার করে রেজিস্ট্রি থেকে অর্ডারও পেতে পারে reg query "HKCU\Control Panel\International" /vShortDate। পরীক্ষার সময় সতর্ক থাকুন: ওপেন কমান্ড প্রম্পটের জন্য, কন্ট্রোল প্যানেল সেটিংস পরিবর্তন করে তারিখটি প্রদর্শন করতে ব্যবহৃত বিন্যাসও পরিবর্তিত হয় (উভয় dateএবং date /tএবং উভয়ের জন্য echo %date%), তবে উইন্ডোজ on এ নতুন তারিখের ফর্ম্যাট পরিবর্তন হয় না! আমার সংক্ষিপ্ত তারিখ বিন্যাস পরিবর্তন YY/MM/dd, আমাকে পায়: The current date is: 12/06/23 Enter the new date: (mm-dd-yy)। একটি নতুন কমান্ড প্রম্পট খোলার এটি স্থির করে।
আরজান

2
@ আরজান এটি হওয়া উচিত reg query "HKCU\Control Panel\International" /v sShortDate
ট্রাইসেস

6

এটি আমি ব্যবহার করেছি:

::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/


আমার সিস্টেমে% তারিখ% তে "মঙ্গল 10/14/2008" রয়েছে। সুতরাং, আপনাকে এখনও "মঙ্গল" এবং স্থানের অক্ষর কেটে ফেলতে হবে (বা অন্যথায় ডিল করতে হবে)।
বোল্টবাইট

হাই @ মিকাহুইটম্যান এসকিউএল সার্ভারে এক্সপি_সিমিডেল ব্যবহার করে তৈরি তারিখের সাথে ফাইলগুলি লোড করা সম্ভব? আমি "ফরফিলস" কমান্ড চেষ্টা করেছি কিন্তু কোন ফলসই হয়নি। আমি Stackoverflow একটি প্রশ্ন জিজ্ঞাসা করেছি, কল্যাণকামী লিংক দেখতে দয়া করে @ stackoverflow.com/q/32293517/3327081
kolunar

5

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

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

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

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

(সূত্র)


5

উপর ভিত্তি করে একটি ফাংশন 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%

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

2014-01-22 12:51:53

নোট করুন যে ফাংশন প্যারামিটারগুলি আউট-প্যারামিটারগুলি - যা আপনাকে মানগুলির পরিবর্তে পরিবর্তনশীল নাম সরবরাহ করতে হবে।

সমস্ত প্যারামিটারগুলি alচ্ছিক, তাই call:Now Y Mযদি আপনি কেবল বছর এবং মাস পেতে চান তবে একটি বৈধ কল।


4

http://sourceforge.net/projects/unxutils/files/

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

এটি আপনার উইন্ডোজ সিস্টেম 32 ফোল্ডারে রাখুন।

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

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

আপনি কীভাবে এর আউটপুটটিকে পরিবেশের ভেরিয়েবলের মধ্যে রাখবেন তা আমি নিশ্চিত নই ... সেটটি ব্যবহার করে।


1
ধন্যবাদ, যদিও এই প্রশ্নটি অতিরিক্ত সরঞ্জামগুলি ডাউনলোড না করেই এটি করার জন্য বিশেষভাবে।
রোরি

3

আঞ্চলিক স্বাধীন সমাধান আইএসও তারিখের ফর্ম্যাট তৈরি করে:

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:

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


আপনি আইডেট ( টেকনিকট.মাইক্রোসফট /en-us/library/cc978637.aspx ) কোয়েরিটি নিবন্ধভুক্ত করতে পারেন এবং শর্তসাপেক্ষে এগিয়ে যেতে পারেন (টেকনেট অনুযায়ী 3 সম্ভাব্য মান) - যদিও আমি এখনও এটি চেষ্টা করি নি।
ভিনসেন্ট ডি স্মেট

2
:: GetDate.cmd -> Uses WMIC.exe to get current date and time in ISO 8601 format
:: - Sets environment variables %_isotime% and %_now% to current time
:: - On failure, clears these environment variables
:: Inspired on -> https://ss64.com/nt/syntax-getdate.html
:: - (cX) 2017 adolfo.dimare@gmail.com
:: - http://stackoverflow.com/questions/203090
@echo off

set _isotime=
set _now=

:: Check that WMIC.exe is available
WMIC.exe Alias /? >NUL 2>&1 || goto _WMIC_MISSING_

if not (%1)==() goto _help
SetLocal EnableDelayedExpansion

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

::   1    2     3       4      5      6
:: %%G  %%H    %%I     %%J    %%K    %%L
:: Day  Hour  Minute  Month  Second  Year
:: 27   9     35      4      38      2017

:: Remove excess leading zeroes
        set _mm=%_mm:~-2%
        set _dd=%_dd:~-2%
        set _hour=%_hour:~-2%
        set _minute=%_minute:~-2%
        set _second=%_second:~-2%
:: Syntax -> %variable:~num_chars_to_skip,num_chars_to_keep%

:: Set date/time in ISO 8601 format:
        Set _isotime=%_yyyy%-%_mm%-%_dd%T%_hour%:%_minute%:%_second%
:: -> http://google.com/search?num=100&q=ISO+8601+format

if 1%_hour% LSS 112 set _now=%_isotime:~0,10% %_hour%:%_minute%:%_second%am
if 1%_hour% LSS 112 goto _skip_12_
    set /a _hour=1%_hour%-12
    set _hour=%_hour:~-2%
    set _now=%_isotime:~0,10% %_hour%:%_minute%:%_second%pm
    :: -> https://ss64.com/nt/if.html
    :: -> http://google.com/search?num=100&q=SetLocal+EndLocal+Windows
    :: 'if () else ()' will NOT set %_now% correctly !?
:_skip_12_

EndLocal & set _isotime=%_isotime% & set _now=%_now%
goto _out

:_WMIC_MISSING_
echo.
echo WMIC.exe command not available
echo - WMIC.exe needs Administrator privileges to run in Windows
echo - Usually the path to WMIC.exe is "%windir%\System32\wbem\WMIC.exe"

:_help
echo.
echo GetDate.cmd: Uses WMIC.exe to get current date and time in ISO 8601 format
echo.
echo    %%_now%%     environment variable set to current date and time
echo    %%_isotime%% environment variable to current time in ISO format
echo    set _today=%%_isotime:~0,10%%
echo.

:_out
:: EOF: GetDate.cmd

0

কার্যকরী আকারে রেফারেন্সের জন্য একটি পরিচিত এলাকা দেওয়া। 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

এবং টাইমস্ট্যাম্প.ব্যাট ফাইলটিতে সংরক্ষণ করা হয়েছে, এখানে ফলাফল:

এখানে চিত্র বর্ণনা লিখুন


দেখে মনে হচ্ছে এটি আঞ্চলিক সমস্যা নিয়ে এসেছে - এটি সমস্ত ইংলিশ মেশিনে কাজ করে না।

অবাক হন না, @ স্টিওয়েস্ট। যদি অস্থায়ীভাবে লোকাল সেট করা সম্ভব হত তবে এটি একটি বিশ্বব্যাপী সমাধান সরবরাহ করতে সহায়তা করতে পারে তবে এই অঞ্চলটি আগে থেকেই জানা দরকার বলে মনে হয়। আপনার স্থানীয় অবস্থান কি মার্কিন-মার্কিন বা এন কোথাও কোথাও?
বিভিজে

@ স্টিভেস্ট আমি মনে করি যে লোকেলগুলির একটি তালিকা তৈরি করা সম্ভব হবে যেখানে প্রতিটিের সাথে বৈধতা দেওয়ার জন্য একটি নমুনা সহ তারিখ / সময় এক্সপ্রেশন থাকে। আমি সুপার ব্যস্ত, তবে আমি আমার উত্তরটি উদাহরণের সাথে আপডেট করার চেষ্টা করব। আপনি কি আমাকে এইচকে সময় / তারিখ আউটপুটগুলির নমুনা দেখাতে পারেন? আমি নির্বোধভাবে স্থির অফসেটগুলিতে zh-HK মুদ্রণের অঙ্কগুলি ধরে নিচ্ছি।
বিভিজে

zh-HK: (yy)yy年m月d日 hh:mm- কোনও নেতৃস্থানীয় শূন্য নেই। (yy) আমাদের কাছে 2 ডিজিট বছর, বা 4 অঙ্কের বছর থাকার কারণে এড়ানো যেতে পারে। তবে দয়া করে একটি জিনিস লক্ষ করুন: তারিখের সময় বিন্যাসটি প্রতি মেশিনে পরিবর্তন করা যেতে পারে।

ধন্যবাদ @ স্টিভেস্ট, আমি কয়েক সপ্তাহের মধ্যে অনুসরণ করব। চালান systeminfoCLI এবং আমার সম্পর্কে আপনি কি দেখতে দিন System Locale। প্রোগ্রামটি চলতে সময় লাগে, তবে সম্ভবত স্থানীয় ফলাফলের ফলাফলটি ক্যাশে হতে পারে এবং পরবর্তীকালে একটি টাইমস্ট্যাম্প ফর্ম্যাটটিকে সূচীকরণের জন্য ব্যবহৃত হতে পারে।
বিভিজে

0

উইন্ডোজ 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%

এবং আবার. এটা চমৎকার এটি আপনার মেশিনে কাজ করে, কিন্তু আপনি বিন্দু মিসindependent of the regional settings of the machine
Jeb

-1

আমি নোট করেছি যে ও / পি করেন নি একটি অঞ্চল স্বাধীন সমাধান জন্য জিজ্ঞাসা করুন। আমার সমাধান যদিও যুক্তরাজ্যের পক্ষে।

এটি ব্যাচ ফাইলে ব্যবহারের জন্য সহজতম সমাধান, একটি 1-লাইন সমাধান:

FOR /F "tokens=1-3 delims=/" %%A IN ("%date%") DO (SET today=%%C-%%B-%%A)
echo %today%

2
তিনি একটি অঞ্চলের স্বাধীন সমাধানের কথা উল্লেখ করেছিলেন ...particularly because of the regional settings issue with using date। BTW। আপনার সমাধানটি বিশটি উত্তরগুলির মতো।
jeb

হ্যাঁ, তবে আমার আসলে (allyচ্ছিকভাবে) কমান্ড লাইনে ব্যবহার করা যেতে পারে। কোডের ৩ টি লাইন একই সমাধান প্রদান করবে যদি 35 টি লাইন কোড পোস্ট করার যোগ্যতা কী?
এড 999

আমি পুরোনো উত্তর যে কোনো প্রাসঙ্গিক পার্থক্য দেখতে পাচ্ছি না @Matthew জনসন, 2010 বা @KChiki, 2011
Jeb

যদিও এই উত্তরটি ভুল, সত্যিকারের উত্তরদাতার উপর মন্তব্য করার জন্য, যখন আপনি সহজেই করতে পারতেন এখানে লুপের প্রয়োজন নেইecho %date:/=-%
জেরহার্ড বার্নার্ড

না। আপনি ফর লুপটি বাদ দিলে কোনও ভেরিয়েবল তৈরি করা যায় না এবং আপনি যে তারিখটি বের করে নিতে সমস্যা নিয়েছিলেন তা এখনও অকেজো। ফর লুপের সাহায্যে লুপ দ্বারা নির্মিত ভেরিয়েবলগুলি স্ক্রিপ্টের অন্যান্য অংশে ব্যবহারের জন্য উপলব্ধ। ফর লুপ তৈরি করতে কয়েক ডজন লাইন কোড ব্যবহার করে আমি দৃ strongly়ভাবে অবহেলা করি, যখন কেবল 1 লাইন প্রয়োজন হয়। এবং আমি নন-কমান্ড লাইন সমাধান পোস্ট করার জন্য দৃ strongly়ভাবে অবমূল্যায়ন করি, যেখানে o / p বিশেষভাবে কমান্ড লাইনে ব্যবহারের জন্য এক-লাইন সমাধান চেয়েছিল।
এড 999

-3

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

:: 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

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