কোনও ফাইলের নাম তৈরি করতে ব্যাচ ফাইলে তারিখ এবং টাইমস ব্যবহার করা


20

আমি একটি ব্যাচ ফাইল থেকে একটি প্রোগ্রাম চালাচ্ছি, এটি করা হয়ে গেলে আমার মাইএসকিউএল ডাটাবেসের একটি স্বয়ংক্রিয় ব্যাকআপ সম্পাদন করে।

আমি ব্যাচ ফাইলটি প্রতিটি রানের জন্য আলাদা ব্যাক আপ তৈরি করতে চাই, যাতে আমি ব্যাকট্র্যাস করতে পারি।

কাঙ্ক্ষিত ফাইলের নামটি হবে gnucash_shockwave-20121128210344.sql (তারিখের ফর্ম্যাট YYYY-MM-DD-HH-MM-SS)

আমি কয়েকটি জিনিস গুগল করেছি যা বলেছে চেষ্টা করুন %DATE:~4%এবং %Date.Year%তবে আমি বলে একটি ত্রুটি পেয়েছিThe system cannot find the specified path.

যদি আমি এটির টাইমস্ট্যাম্পের প্রয়াস সরিয়ে ফেলি তবে স্ক্রিপ্টটি ঠিকঠাক কাজ করে তবে শেষের ব্যাকআপটি লিখে দেয়

কোডের যে বিভাগটি সম্পর্কে আমি কথা বলছি তা এখানে:

@REM *** EXECUTION ***
echo. Starting backup...
SET timestamp %DATE:~-4%%DATE:~4,2%%DATE:~7,2%%TIME%
%mysqldir%\mysqldump -u %mysqluser% -p%mysqlpassword% -h %mysqlhost% -P %mysqlport% --databases --routines --verbose gnucash_shockwave > %BackupDir%\gnucash_shockwave-%timestamp%.sql

echo.------------------------------------------------------
echo. Backup complete!

কোনও পরামর্শ?


আমি আপনার অ্যাকাউন্টগুলি পুনঃসংযুক্ত করেছি, আপনার নিজের পোস্ট এবং আপনার প্রশ্নের উত্তর এখনই লগ ইন করতে এবং মন্তব্য করতে সক্ষম হওয়া উচিত।
slhck

পিচ্ছিল, লোল ধন্যবাদ আমি কী ভাবছিলাম তা ভাবছিলাম তখন মনে
পড়ল

% তারিখ% কে% তারিখ দ্বারা প্রতিস্থাপন করা হচ্ছে: ~ 6,4% -% তারিখ: ~ 3,2% -% তারিখ
:, 0,2

উত্তর:


27

তারিখ এবং সময় ফর্ম্যাটটি অঞ্চল এবং ভাষা নিয়ন্ত্রণ প্যানেল অ্যাপলেটটিতে আপনি যা নির্দিষ্ট করেছেন তার উপর নির্ভর করে ।

তারিখ এবং সময় উভয় স্ট্রিং থেকে যথাযথ অংশ পেতে প্রয়োজনীয় নিম্নোক্ত ব্যাচ ফাইলটি চালান (যা ডিডি / মিমি / ইয়ি এবং এইচএ: মিমি: এসএস ) ধরে রাখুন এবং সাবস্ট্রিংয়ের নিষ্কাশন (: এবং ~ অক্ষরগুলি ব্যবহার করে) সংশোধন করুন:

@echo off
cls
echo Date format = %date%
echo dd = %date:~0,2%
echo mm = %date:~3,2%
echo yyyy = %date:~6,4%
echo.
echo Time format = %time%
echo hh = %time:~0,2%
echo mm = %time:~3,2%
echo ss = %time:~6,2%
echo.
echo Timestamp = %date:~6,4%-%date:~3,2%-%date:~0,2%-%time:~0,2%-%time:~3,2%-%time:~6,2%

সাবস্ট্রাকশন এক্সট্রাকশন সম্পর্কিত আরও সহায়তার set /?জন্য কমান্ড প্রম্পটে টাইপ করুন বা এই পৃষ্ঠাটি দেখুন


ধন্যবাদ, আমি মনে করি আমি বুঝতে পারি যে এটি এখন কীভাবে কাজ করছে। আমি অফিসে নেই, তবে আমি সেখানে পৌঁছে যাওয়ার সাথে সাথেই চেষ্টা করব। সাহায্যের জন্য আমরা উইন্ডোজ 8 ধন্যবাদ ব্যবহার করছি
লোকালঙ্কিত থেকে

বুঝেছি, তারিখের স্ট্রিং অবস্থানগুলি টুইঙ্ক করতে হয়েছিল, সম্ভবত আমার অবস্থান এবং ভাষার কারণে কিন্তু এটি কৌশলটি করেছিল! আপনাকে অনেক ধন্যবাদ!
লোকফ্রোমফ্লল

লোকেল স্বাধীন তারিখ ব্যবহার করুন wmic পরিবর্তে
phuclv

এই সমাধানটি আপনাকে বিভিন্ন মেশিনে আলাদা ফলাফল দিতে পারে।
মেহেদী দেহঘানি

1
আমি মনে করি তারিখের আউটপুট দিয়ে কিছু পরিবর্তন হয়েছে, আমি > echo yyyy = %DATE:~6,4%উত্পাদন করতে পারি yyyy = /20/। তবে echo yyyy = %DATE:~10,4%হয় yyyy = 2019
teeks99

7

আমার জন্য কি কাজ করেছে তা এখানে।

Format - mmddyyyy_HHMMSS

echo %DATE% %TIME%

Date format = Thu 03/05/2015 15:48:26.22

echo mm = %date:~4,2%

echo dd = %date:~7,2%

echo yyyy = %date:~10,4%

echo Timestamp = %date:~4,2%%date:~7,2%%date:~10,4%_%time:~0,2%%time:~3,2%%time:~6,2%

Timestamp - 03052015_154013

3
সুপার ব্যবহারকারীকে স্বাগতম! আপনার আদেশগুলি কী করে তার কিছু ব্যাখ্যা অন্তর্ভুক্ত করতে দয়া করে আপনার উত্তরটি সম্পাদনা করতে পারেন?
এক্সেলেল

আপনি ভুল প্রশ্নের উত্তর দিচ্ছেন। ওপির প্রশ্নটি ওয়াইওয়াইওয়াইএমএমডিডি চেয়েছে; এই উত্তরটি এমএমডিডিওয়াইওয়াই দেয়।
স্কট

কোনও প্রশ্ন নিয়ে স্ট্যাকের কাছে আসা এবং সঠিক উত্তরটি পাওয়া আমার জন্য দিনটি বাঁচানোর অপেক্ষায় বসে আছে nothing ধন্যবাদ এত @abbs এবং Excelll
clockwiseq

3

একটু টুইট করে আমি এটি পেয়েছি

@echo off
cls
echo Date format = %date%
echo dd = %date:~0,2%
echo mm = %date:~3,2%
echo yyyy = %date:~6,8%
echo.
echo Time format = %time%
echo hh = %time:~0,2%
echo mm = %time:~3,2%
echo ss = %time:~6,2%
echo.
echo Timestamp = %date:~0,2%_%date:~3,2%_%date:~6,8%-%time:~0,2%_%time:~3,2%_%time:~6,2%
ECHO "TEST..." > test-%date:~0,2%_%date:~3,2%_%date:~6,8%-%time:~0,2%_%time:~3,2%_%time:~6,2%.txt


ফলাফল:

"test-do_25_06-2015-22_21_51.txt" (Thursday_25th_June_2015-22:21.51)


এটি অন্যান্য উত্তরগুলির থেকে কীভাবে আলাদা?
সন্দেহভাজন

@ সুস্পেকটাস: এই উত্তরটি অ্যাবস-এর উত্তর থেকে পৃথক হয়েছে যে অ্যাবসগুলির একটি মার্কিন অঞ্চল (যেমন, লোকাল) ধরেছে, যেখানে %DATE%~ Ddd MM/DD/YYYY, যেখানে এই উত্তরটি কোনও মার্কিন -মার্কিন অঞ্চল হিসাবে ধরে নিয়েছে, যেখানে %DATE%~ DD/MM/YYYY(সপ্তাহের দিন ব্যতীত)। এবং এটি করণের জবাব থেকে পৃথক হয়েছে যে এইটি ভুল the প্রশ্নটি ওয়াইওয়াইওয়াইএমএমডিডি চেয়েছে; এই উত্তরটি DD_MM – YYYY দেয়।
স্কট

2

বিলম্বের জন্য দুঃখিত ...

আঞ্চলিক সেটিং যাই হোক না কেন যথাযথ তারিখ পাওয়ার একমাত্র নির্ভরযোগ্য উপায় হ'ল ফক্সিড্রাইভ @ /programming/11037831/filename-timestamp-in-windows-cmd-batch-script এর সমাধান

@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

1

আমি মনে করি এটি @ নিক রজার্সকে কিছুটা উত্তর দেয়।

উদাহরণস্বরূপ: জার্মান সনাক্তকরণের সাথে (ডি_ডিই) 10 এর নীচে ঘন্টা পরে একটি শীর্ষস্থানীয় সাদা স্থান রয়েছে।

এছাড়াও আমি এই মুহুর্তে একটি শীর্ষস্থানীয় শূন্য চেয়েছিলাম। "প্রতিধ্বনি -! ^ _ এইচ! -" কেবল "9" এর পরিবর্তে "09" দেয়

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

+ বোনাস: _ মিমি = মিলিসেকেন্ড বা শেষ দুটি অঙ্ক যাই হোক না কেন (-;

মন্তব্য: কখনও কখনও এইচওআরকে এড়িয়ে যাওয়ার দরকার হয়, ভিতরে কোডটি দেখুন

SETLOCAL
SETLOCAL EnableExtensions
SETLOCAL EnableDelayedExpansion
@ECHO ON
@rem use FOR /F to 'break out' the components of %DATE% and %TIME%, assuming 'yyyy/mm/dd' format date i.e.
@rem works also with german standard format dd.mm.yyyy

echo ----- date -----
    echo _%date%_
    for /F "tokens=1-3 delims=.-/" %%i IN ("%date%") DO Set "_Y=%%i"& Set "_M=%%j"& Set "_D=%%k"
    @rem Switch the year and day if appropriate
    IF "xx%_D:~2%" == "xx" Set "_Y=%_D%"& Set "_D=%_Y%"
    set __date=%_Y%%_M%%_D%
    echo _%__date%_
echo ----- date -----

echo ----- time -----
    echo _%time%_
    for /F "tokens=1-4 delims=:," %%l IN ("%time%") DO Set "_tmp_hh=%%l"& Set "_mm=%%m"& Set "_ss=%%n"& Set "_ms=%%o"
    @rem add leading zero to hour if necessary
    if %_tmp_hh% LSS 10 (set _hh=^0%_tmp_hh:~1,1%) ELSE (set _hh=%time:~0,2%)
    @rem sometimes the HOUR needs to be escaped, like this
    echo - !^_hh! -
    set __time=%_hh%%_mm%%_ss%%_ms%
    echo _%__time%_
echo ----- time -----

    Set fullTime=%_Y%%_M%%_D%-%_hh%%_mm%%_ss%%_ms%
    echo _%fullTime%_
pause

আউটপুটস: প্রতিধ্বনি ফুলটাইম = 15062018-10182821


0

সংক্ষিপ্ত (সবচেয়ে বহুমুখী?) উত্তরটি কেবলমাত্র তিনটি লাইন কোড (মন্তব্য ইত্যাদি বাদ দিয়ে) সহ টাইমস্ট্যাম্প সিএমডি স্ক্রিপ্ট অনুসারে ...

@ECHO ON
@REM use FOR /F to 'break out' the components of %DATE% and %TIME%, assuming 'yyyy/mm/dd' format date i.e.

    for /F "tokens=1-6* delims=.:-/ " %%i IN ("%DATE% %TIME%") DO Set "YYYY=%%i"& Set "MM=%%j"& Set "DD=%%k"& Set "HH=%%l"& Set "MI=%%m"& Set "SS=%%n"

@REM Switch the year and day if appropriate

    IF NOT "X%DD:~2%" == "X" Set "YYYY=%DD%"& Set "DD=%YYYY%"

    Set "TimeStamp=%YYYY%%MM%%DD%%HH%%MI%%SS%"

একটি ব্যাচের ফাইলে ফর স্টেটমেন্টে চলকটির জন্য% পরিবর্তে %% ব্যবহারের প্রয়োজনটি নোট করুন

... কার্যকর করার ফলন (ফাঁকা লাইন এবং মন্তব্যগুলি সরানো হয়েছে) ...

C:\>timestamp.cmd
C:\>for /F "tokens=1-6* delims=.:-/ " %i IN ("2018/03/02 11:17:43.35") DO Set "YYYY=%i"  & Set "MM=%j"  & Set "DD=%k"  & Set "HH=%l"  & Set "MI=%m"  & Set "SS=%n"
C:\>Set "YYYY=2018"  & Set "MM=03"  & Set "DD=02"  & Set "HH=11"  & Set "MI=17"  & Set "SS=43"
C:\>IF NOT "X" == "X" Set "YYYY=02"  & Set "DD=2018"
C:\>Set "TimeStamp=20180302111743"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.