উইন্ডোজ সার্ভার ২০০৮ ব্যবহার করে, আমি উইন্ডো টাস্ক শিডিয়ুলারের সাহায্যে চালিত স্ক্রিপ্টের আউটপুট ক্যাপচার করব?
আমি বরং একটি দীর্ঘ কাস্টম মুদ্রণ ব্যাচ-স্ক্রিপ্ট পরীক্ষা করছি, এবং ডিবাগিংয়ের উদ্দেশ্যে, আমি প্রতি রাতে এটি থেকে আউটপুটটি দেখতে চাই।
উইন্ডোজ সার্ভার ২০০৮ ব্যবহার করে, আমি উইন্ডো টাস্ক শিডিয়ুলারের সাহায্যে চালিত স্ক্রিপ্টের আউটপুট ক্যাপচার করব?
আমি বরং একটি দীর্ঘ কাস্টম মুদ্রণ ব্যাচ-স্ক্রিপ্ট পরীক্ষা করছি, এবং ডিবাগিংয়ের উদ্দেশ্যে, আমি প্রতি রাতে এটি থেকে আউটপুটটি দেখতে চাই।
উত্তর:
টাস্ক শিডিয়ুলারে কমান্ড স্ট্রিং হিসাবে এটি চেষ্টা করুন:
cmd /c yourscript.cmd > logall.txt
cmd /c "path with spaces/command.cmd > file.txt"
আপনার যদি ফাঁকা জায়গা থাকে তবে ব্যবহার করুন । 2>&1
থেকে ইভান এর উত্তর এছাড়াও কোট ভিতরে চলে যায়।
cmd /c ""C:\temp\My test dir\something 123\myTool.exe" > Tilo_log.txt 2>&1"
>>
বরং এটি প্রতিটি সময় মুছে যাওয়ার চেয়ে লগ ফাইল যোগ হবে। 2>&1
এছাড়াও আপনার লগ ফাইলে ত্রুটি পাঠাবে।
cmd /c YourProgram.exe >> log.txt 2>&1
আপনার এমন একটি ডিবাগ.কম থাকতে পারে যা আপনার স্ক্রিপ্ট.এমডি কল করে
yourscript.cmd > logall.txt
আপনি thycript.cmd এর পরিবর্তে debug.cmd সময়সূচী করুন
cmd.exe
আপনার নির্ধারিত টাস্কের আউটপুট লগ করতে একটি টাইমস্ট্যাম্পড ফাইলের নাম তৈরি করতে কমান্ড প্রসেসর ব্যবহার করুনএখানে অন্যদের দ্বারা উত্তরগুলি তৈরি করার জন্য, এটি এমন হতে পারে যে আপনি কোনও আউটপুট ফাইল তৈরি করতে চান যাতে ফাইলটির নামে তারিখ এবং / অথবা সময় এম্বেড থাকে। আপনার জন্য এটি করতে আপনি cmd.exe
কমান্ড প্রসেসর ব্যবহার করতে পারেন ।
দ্রষ্টব্য: এই কৌশলটি অভ্যন্তরীণ উইন্ডোজ এনভায়রনমেন্ট ভেরিয়েবলগুলির স্ট্রিং আউটপুট নেয় এবং অক্ষরের অবস্থানের উপর ভিত্তি করে এগুলি টুকরো টুকরো করে। এর কারণে, নীচের উদাহরণগুলিতে সরবরাহ করা সঠিক মানগুলি আপনি যে উইন্ডোজ ব্যবহার করেন সে অঞ্চলের জন্য সঠিক নাও হতে পারে। এছাড়াও, কিছু আঞ্চলিক সেটিংস সহ, তারিখ বা সময়ের কিছু উপাদান নির্মিত ফাইলের নামের সাথে 10 এর চেয়ে কম মান নির্ধারণ করতে পারে এই সমস্যাটি প্রশমিত করতে আপনার ফাইলের নামটি উদ্ধৃতি সহ ঘিরে ফেলুন যাতে ফাইলের কোনও অনিচ্ছাকৃত স্পেস থাকে নাম আপনি যে কমান্ড-লাইনটি তৈরি করছেন তা ভঙ্গ করবে না। পরীক্ষা এবং আপনার পরিস্থিতির জন্য সবচেয়ে ভাল কাজ করে তা সন্ধান করুন।
এর PowerShell
চেয়ে বেশি ক্ষমতাবান সচেতন হন cmd.exe
। এটি আরও শক্তিশালী হওয়ার একটি উপায় হ'ল এটি বিভিন্ন উইন্ডোজ অঞ্চলের সাথে কাজ করতে পারে। তবে এই উত্তরটি এই সমস্যাটি ব্যবহার করে সমাধান করার বিষয়ে cmd.exe
নয় PowerShell
, তাই আমরা চালিয়ে যাচ্ছি।
ব্যবহার cmd.exe
আপনি এটির তারিখ এবং সময় বিভিন্ন উপাদানের অ্যাক্সেস করতে পারেন slicing অভ্যন্তরীণ বিভিন্ন পরিবেশের %date%
এবং %time%
, নিম্নরূপ (আবার, সঠিক slicing মান অঞ্চল উইন্ডোজ কনফিগার উপর নির্ভরশীল):
%date:~10,4%
%date:~4,2%
%date:~7,2%
%time:~0,2%
%time:~3,2%
%time:~6,2%
মনে করুন আপনি এই লগ / তারিখের বিন্যাসটি ব্যবহার করে আপনার লগ ফাইলটির নামকরণ করতে চান: " Log_[yyyyMMdd]_[hhmmss].txt
"। আপনি নিম্নলিখিতটি ব্যবহার করবেন:
Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt
এটি পরীক্ষা করতে, নিম্নলিখিত কমান্ড লাইনটি চালান:
cmd.exe /c echo "Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt"
এটি সব একসাথে রেখে পুনর্নির্দেশ করতে উভয় stdout
এবং stderr
বর্তমান তারিখ এবং সময় নামে একটি লগ ফাইলে আপনার স্ক্রিপ্টটি থেকে ব্যবহার আপনার কমান্ড লাইন হিসাবে নিম্নলিখিত ব্যবহার করতে পারেন:
cmd /c YourProgram.cmd > "Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt" 2>&1
নোট করুন ফাইলের নামের চারদিকে কোট ব্যবহারের উদাহরণগুলি হ্যান্ডেল করার জন্য একটি তারিখ বা সময় উপাদান কোনও স্থানের অক্ষর প্রবর্তন করতে পারে।
আমার ক্ষেত্রে, যদি বর্তমান তারিখ / সময় 10/05/2017 9:05:34 পূর্বাহ্ন হয়, উপরের কমান্ড-লাইনটি নিম্নলিখিতটি তৈরি করতে পারে:
cmd /c YourProgram.cmd > "Log_20171005_ 90534.txt" 2>&1
আপনি যে লাইনে আউটপুট করতে চান সেগুলিতে আপনি লগ ফাইলটিতে লিখতে পারেন:
@echo off
echo Debugging started >C:\logfile.txt
echo More stuff
echo Debugging stuff >>C:\logfile.txt
echo Hope this helps! >>C:\logfile.txt
আপনি যদি কোনও কিছুর মাধ্যমে ট্রল করতে না চান তবে কোন আদেশগুলি আউটপুট দিতে হবে তা চয়ন করতে পারেন, আপনাকে যা দেখতে হবে তা পান। >
ইচ্ছা আউটপুট নির্দিষ্ট ফাইলে (ফাইল তৈরি হলে বিদ্যমান নয় এবং এটি মুছে যদি এটা না)। >>
ফাইল নিদিষ্ট (ফাইল তৈরি হলে বিদ্যমান নয় কিন্তু বিষয়বস্তু সেটা না হলে করতে সংযোজন) এর সংযোজন হবে।
উদাহরণস্বরূপ কীভাবে প্রোগ্রাম চালানো যায় এবং টাইমস্ট্যাম্পের সাথে ফাইল করার জন্য স্টডআউট এবং স্ট্ডার লিখুন:
cmd /c ""C:\Program Files (x86)\program.exe" -param fooo >> "c:\dir space\Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt" 2>&1"
মূল অংশটি হ'ল পুরো অংশটিকে পিছনে cmd /c
ডাবল করা এবং এর অভ্যন্তরে এটি স্বাভাবিক হিসাবে ডাবল উদ্ধৃতি ব্যবহার করে। এছাড়াও নোট করুন যে তারিখটি লোকাল নির্ভর, এই উদাহরণটি মার্কিন লোকাল ব্যবহার করে কাজ করে।
এই স্নিপেট ডেট স্ট্রিংটি তৈরি করতে wmic.exe ব্যবহার করে। এটি স্থানীয় সেটিংস দ্বারা জঞ্জাল নয়
rem DATE as YYYY-MM-DD via WMIC.EXE
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set datetime=%%I
set RDATE=%datetime:~0,4%-%datetime:~4,2%-%datetime:~6,2%