উইন্ডোজ কমান্ড-লাইন: বর্তমান তারিখ সহ একটি ফাইল তৈরি করুন তার নামে


19

আমি ব্যাচের স্ক্রিপ্ট থেকে একটি জিপ ফাইল তৈরি করার চেষ্টা করছি। আর্কাইভ_জিপ এর মতো নামকরণ করা আমার দরকার

দুর্ভাগ্যক্রমে, স্ল্যাশগুলির কারণে y / m / d এর মতো ফর্ম্যাট করার তারিখ সহ সিস্টেমে এটি কাজ করে না:

zip some_options "archive_%DATE%.zip"

%DATE%পরিবর্তনশীল ভালো কিছু করার জন্য বিস্তৃতি

Mon 09/28/2009

আমার gnuwin32 প্যাকেজে অ্যাক্সেস রয়েছে, তাই আমি স্পর্শ sedএবং ড্যাশ দ্বারা স্ল্যাশগুলি প্রতিস্থাপন করতে, বলতে পারি । সমস্যাটি হল, sedজিপ সংরক্ষণাগারটির ফাইলের নাম তৈরি করতে আমি কীভাবে আউটপুট ব্যবহার করব ?

ইউনিক্স (বাশ) এ, কোনও কমান্ড-ইন-প্লেস মূল্যায়ন করতে ব্যাক-কোটস ব্যবহার করতে পারে এবং এর আউটপুট অন্য কমান্ডে ব্যবহার করতে পারে, এরকম কিছু:

zip [...] archive_`echo %DATE% | sed -e s/.../.../`.zip

উইন্ডোজে কি তেমন কিছু পাওয়া যায়?

অথবা হতে পারে যে ফেরতের মানটির জন্য একটি ভেরিয়েবল সেট করার sedএবং ফাইলটির নামটি ব্যবহারের জন্য এটি ব্যবহার করার উপায় আছে ?

উত্তর:


27

আপনি ব্যবহার করে ভেরিয়েবলগুলিতে প্রতীকগুলি প্রতিস্থাপন করতে পারেন:

set _date=%DATE:/=-%

1
এটি একটি ঝরঝরে কৌশল!
ক্রিসটি ডায়াকোনস্কু

PS স্পেস বা অন্যান্য বাজে চরিত্রগুলি থেকেও মুক্তি পাওয়ার কোনও 'ওয়ান-লাইনার' উপায় আছে? (প্রতিটি চরিত্রের প্রতিস্থাপনের জন্য তৃতীয় ... নবম টেম্প ভেরিয়েবল থাকার বিপরীতে)
ক্রিসটি ডায়াকোনস্কু

না দুঃখিত। মনে হয় এমন কোনও জিনিস নেই। এটি করতে সিনট্যাক্সের জন্য আপনাকে ফ্যালব্যাক করতে হবে। এনবি: এটি ব্যাচ-প্রোগ্রামিংয়ের জন্য একটি দুর্দান্ত রেফারেন্স: রবভ্যান্ডারউউড.com
ক্রিস্টোফার

5
এই আরও দ্রুত চেয়ে হল: %date:~-10,2%-%date:~-7,2%-%date:~-4,4% !
জেস স্টোন

আপনার প্রতিক্রিয়া জেস স্টোন কেউ কীভাবে +1 করেনি! আমার কাছ থেকে +1 !!!
আরভো বোয়েন

5

আমি সবসময় ব্যবহার:

For /f "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDate=%%a%%b%%c%%d

তারপরে সিডিট হবে Sat02182012। আপনি যদি এটি আরও বাছাইযোগ্য সেট সিডিট%% d - %% বি - %% সি করতে চান তবে এটি 2012-02-18 হবে

For /f "tokens=1,2 delims=:" %%f in ('time /t') do set CTime=%%f%%g

তারিখ এবং সময় ফোল্ডার / ফাইল বন্ধুত্বপূর্ণ করতে।


4

আমি এখানে খুব অনুরূপ প্রশ্নের উত্তর পোস্ট করেছি । ক্ষেত্রগুলিতে তারিখের বিচ্ছিন্নতা হ্যারিমিকের উত্তরে কয়েকটি লাইনের পরিবর্তে 1 লাইনে করা হয়।

মজার অংশটি হ'ল:

@echo off
for /F "tokens=2-4 delims=/ " %%i in ('date /t') do set yyyymmdd=%%k%%j%%i
echo Date: %yyyymmdd%

এবং সতর্কতা এখনও প্রাসঙ্গিক:

সতর্কতা : তারিখের ফর্ম্যাট (yyyymmdd = %% কে %% জ %% i) আপনার আঞ্চলিক সেটিংসের উপর নির্ভর করে। যেহেতু আমি ফরাসি তারিখের ফর্ম্যাটটি (ডিডি / মিমি / ইয়াহু) ব্যবহার করি, তাই আমাকে "%% k %% j %% i" ফর্ম্যাট হিসাবে ব্যবহার করতে হবে (%% i = দিন, %% j = মাস, %% j = বছর)।

যদি আপনার আঞ্চলিক সেটিংসগুলি মার্কিন স্টাইল (মিমি / ডিডি / ইয়াই) তে সেট করা থাকে তবে আপনার "%% কে %% i %% জ" (%% i = মাস, %% j = দিন, %% j = বছর) ব্যবহার করা উচিত ।


3
zip some_options "archive_%date:/=-%.zip"

/=-কর্মের পরিবর্তে /একটি বিয়োগ চিহ্ন দিয়ে।


2

কোডের পরিবর্তে এই ভয়াবহ বিটটি যা চায় তার মতো কিছু করা উচিত

move "Filename.txt" "Filename%date:~6,4%%date:~3,2%%date:~0,2%_%Time:~0,2%%Time:~3,2%%Time:~6,2%.txt"

আপনি যদি ফাইলের নামটি যথাযথভাবে পরিবর্তন করেন।


1
একাকীত্ব বোঝাতে যত্ন? :)
ক্রিসটি ডায়াকোনস্কু

এটি মূলত তারিখের বাইরে বিটগুলি কেটে ফেলা হয় এবং ফাইলনামের মাঝামাঝি করে খাওয়ানো হয়, আপনি কমান্ড লাইনে হরর এর কিছু অংশের প্রতিধ্বনি করে এটি পরীক্ষা করতে পারেন, যদি আপনি% তারিখ প্রতিধ্বনি করেন:, 6,4% এটি দেয় বছর। এটি কেবল তারিখ এবং সময়কে বিভক্ত করছে।
কর্ন

মজাদার. দুর্ভাগ্যক্রমে খুব বেশি পোর্টেবলও নয় ...
ক্রিসটি ডায়াকোনসকু

দুর্ভাগ্যক্রমে সাবস্ট্রিংগুলি ব্যবহার করে সমস্যা হ'ল এটি একটি নির্দিষ্ট তারিখের ফর্ম্যাটের উপর নির্ভর করে এবং যখন এটি আলাদা হয় তখন তা ফুরিয়ে যায়। আমার মেশিনে echo %date:~6,4%%date:~3,2%%date:~0,2%ফিরে আসে 9-289-20যেহেতু আমার সাথে yyyy-MM-dd ব্যবহারের তারিখ নির্ধারণ করা হয়েছে (সুতরাং আজ ২০০৯-০৯-২৮))
জোশুয়া

সত্য, আমি এই সমাধানটি কেবলমাত্র একটি মেশিনে ব্যবহার করি তাই এটি কোনও সমস্যার বেশি নয়।
কর্ন

2

আপনার প্রশ্নটি উইন্ডোজ হিসাবে ট্যাগ হওয়ার পরে, আমি এই সমাধানটি পেয়েছি যা ভাল পুরানো .bat ফাইলগুলিতে কাজ করে:
"উইন্ডোজ ব্যাচ ফাইল (.bat) এমএমডিডিওয়াইওয়াই ফর্ম্যাটে বর্তমান তারিখ পেতে" ,
এবং সম্ভবত আপনার ক্ষেত্রে খাপ খাইয়ে নিতে পারে:

প্রতিধ্বনিত
@REM Seamonkey এর দ্রুত তারিখ ব্যাচের (এমএমডিডিওয়াইওয়াই ফর্ম্যাট)
@ আরএম সেটআপগুলি% তারিখ পরিবর্তনশীল
@REM প্রথম পার্স মাস, দিন, এবং বছরকে মিমি, ডিডি, ইয়াহী ফর্ম্যাটগুলিতে পরিণত করে এবং তারপরে এমএমডিডিওয়াইওয়াই সংযুক্ত করে

ফর / এফ “টোকেনস = 1 * ডিলিমস =” %% এ ইন ('তারিখ / টি') সিডিট করুন = %% বি
ফর / এফের জন্য “টোকেনস = 1,2 ইওল = / ডিলিমস = /” %% এ ইন ( 'তারিখ / টি')
SE / মিমি = %% বি ফর / এফ করুন “টোকেনস = 1,2 ডিলিমস = / ইওল = /” %% এ ইন ('প্রতিধ্বনি% সিডিট%') ডিডি সেট করুন ডিডি = %% বি
ফর / F "টোকেনস = 2,3 টিলিমস = /" %% এ ইন ('প্রতিধ্বনি% সিডিট%') করুন সেট করুন ইয়াহাই = %% বিভিএসইটি তারিখ =% মিমি %% ডিডি %% ইয়াহী%

এটি এমএমডিডিওয়াইওয়াই ফর্ম্যাটে আজকের তারিখ হওয়ার জন্য% তারিখের পরিবর্তনশীল সেটআপ করা ছাড়া কিছুই করে না তাই এটি স্ক্রিপ্টে পরে বলা যেতে পারে।

সম্পাদনা
একটি আরও ভাল সিনট্যাক্স পাওয়া গেছে। প্রদত্ত যে আমার তারিখ আজ "সোমবার 28/09/2009":
সেট দিন =% তারিখ: ~ 0,2%
সেট মাস =% তারিখ: ~ 7,2%
সেট বছর =% তারিখ:, 10,4%


2

gnuwin32-'তারিখ' এর সাথে মিশ্রিত খাঁটি cmd.exe সংস্করণ:

%> for /F "usebackq" %d in ( `date.exe +"%y%m%d"` ) do zip archive_%d.zip <folder>

সুতরাং এটি জায়গায় জায়গায় করতে পারেন ! আপনি যদি আমাকে জিজ্ঞাসা করেন, 'ফর' কমান্ডটিতে একটি অদ্ভুত বাক্য গঠন রয়েছে ...
ক্রিসটি ডায়াকোনস্কু

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

1

সিএসক্রিপ + ভ্যাসাবিক ব্যবহার সম্পর্কে কী:

WScript.shell.run "zip archive_" & DatePart("yyyy", Now) & "_" & DatePart("m", Now) & "_" & DatePart("d", Now) & ".zip " & WScript.arguments(0)

মাধ্যমে কল

cscript /nologo zip_it.vbs

1

/ এফ "টোকেনগুলি = 1,2,3,4,5 ডিলিমস = /।" %% এ ইন ('তারিখ / টি') সিডিট সেট করে = %% d - %% বি - %% সি

@echo ডেটা =% সিডিট%

এটি এখন বছরের-মাস-দিন যা এখন সবচেয়ে বেশি দেখা যায়


1

ব্যবহারকারী যদি তার আঞ্চলিক সেটিংস পরিবর্তন করে থাকে তবে যে কোনও সমাধান %DATE%বা আউটপুট ব্যবহার করে date /tতা ভেঙে যাওয়ার সম্ভাবনা রয়েছে। উদাহরণস্বরূপ, আমি আমার "সংক্ষিপ্ত তারিখ" ফর্ম্যাটটি সেট করেছি "yyyy-MM-dd", তাই আমার %DATE%সমান"2012-02-18" , এবংdate /t একই আউটপুট উত্পাদন করে। (এটি উইন্ডোজ for এর জন্য; আমি ধরে নিলাম উইন্ডোজের আগের সংস্করণগুলির জন্য এটি একই রকম।)

একটি ব্যাচ ফাইল তৈরি করুন এবং তারপরে এটি সম্পাদন করুন।

আপনার কাছে জিএনইউ dateকমান্ড উপলব্ধ থাকায় আপনি এরকম কিছু করতে পারেন:

C:\path\to\gnu\date "+zip some_options archive_%Y-%m-%d.zip" > tmp.bat
call .\tmp.bat

tmp.bat এর মতো কিছু থাকবে:

zip some_options archive_2012-02-18.zip

নোট করুন যে tmp.batএটি বর্তমান ডিরেক্টরিতে তৈরি করে , যা কোনও সমস্যা হতে পারে; এটি তৈরি করা ভাল হতে পারে %TEMP%\tmp.bat। আমি পরে ফাইলটিও সরিয়ে নেই; এটি করা যথেষ্ট সহজ।

date +FORMATবিন্যাসের স্ট্রিংয়ের dateঅনুরূপ কমান্ডের আউটপুট বিন্যাস নির্দিষ্ট করতে দেয় printf; দেখতে coreutils তারিখ ডকুমেন্টেশন বিস্তারিত জানার জন্য। ফর্ম্যাটটিতে স্বেচ্ছাসেবী পাঠ্য অন্তর্ভুক্ত থাকতে পারে, তাই এই ক্ষেত্রে আপনার এমনকি ব্যবহারের প্রয়োজনও হয় না sed


1

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

@echo off
For /f "tokens=1,2,3,4,5 delims=/. " %%i in ('date /t') do set CDate=%%k%%j%%i
For /f "tokens=1,2 delims=:" %%f in ('time /t') do set CTime=%%f%%g
tasklist /fo table >tasklist%CDate%%CTime%.txt

আউটপুট ফাইলটির কোনও ডিলিমিটার ছাড়াই এক স্ট্রিংয়ের নামকরণ করা হয়েছে।


0
zip [...] archive_`echo %DATE% | tr / -`.zip

কাজ করা উচিত.

অন্যদিকে - সম্ভবত আপনার কাছে dateকমান্ড উপলব্ধ আছে (আমি উইন্ডোজ জানি না)। যদি হ্যাঁ, তবে কেবল করুন:

zip [...] archive_`date +'%Y-%m-%d'`.zip

ব্যাকটিক ট্রিকটি cmd.exe এ কাজ করে না। এবং উইন্ডোজ 'তারিখ' কমান্ডটি বিন্যাস পরিচালনা করতে পারে না :(
ক্রিশ্চিয়া ডায়াকোনস্কু

-1

এটি আপনার পক্ষে উপযুক্ত কিনা তা নিশ্চিত নয় তবে আমার কোডটি

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

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