একটি সম্পূর্ণ ব্যাচ ফাইল আউটপুট লগ ইন করুন


12

আমি কম্পিউটারে একাধিক সেটিংস সামঞ্জস্য করতে একটি কমান্ড লাইন স্ক্রিপ্ট ব্যবহার করছি। তবে, আমি পুরো আউটপুটটি একটি .txt বা। লগ ফাইলটিতে লগ ইন করতে চাই।

আমি যখন লগিং সিস্টেম সম্পর্কে আমার প্রাথমিক জ্ঞান ব্যবহার করি এটি কোনও ফাইলে আউটপুট রাখে তবে বাস্তবে এটি কার্যকর করে না। আমার ক্ষেত্রে আমার এটি সম্পাদন করতে হবে এবং পরে রেফারেন্সের জন্য কোনও ফাইলে লগ ইন করতে হবে।

কেউ আমাকে কীভাবে এটি করতে পারে তা বলতে সক্ষম হবেন?

আগাম ধন্যবাদ! ডেম্পসে


এমনকি আপনি কোনও অপারেটিং সিস্টেমও নির্দিষ্ট করেননি!
মাইকেল হ্যাম্পটন

উত্তর:


11

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

আপনার ব্যাচ ফাইলের শুরুতে এটি অন্তর্ভুক্ত করুন ...

@echo off
set LOGFILE=batch.log
call :LOG > %LOGFILE%
exit /B

:LOG
[ your script goes here ]

চমৎকার আপনাকে ধন্যবাদ! (অবশ্যই, এখানে% LOGFILE% এর প্রয়োজন নেই: P)
অ্যান্ড্রু

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

হ্যাঁ, আপনি কীভাবে এমনটি করবেন যাতে এটি আপনার স্ক্রিনে থাকা অবস্থায় আপনি তা দেখতে পান?
কার্ল-পুলিশ

3

আপনার প্রশ্নে আপনি উল্লেখ করেছেন:

"... এটি কোনও ফাইলে আউটপুট রাখবে তবে বাস্তবে এটি সম্পাদন করবে না my আমার ক্ষেত্রে আমার এটি সম্পাদন করতে হবে এবং পরে রেফারেন্সের জন্য কোনও ফাইলে লগইন করতে হবে" "

যেহেতু আপনি বলেছেন যে প্রোগ্রামটি চলছে এবং এর আউটপুটটি ফাইলে রাখা হচ্ছে, আমি ভেবেছিলাম আপনি সম্ভবত "মৃত্যুদন্ড কার্যকর" না করে "প্রদর্শিত" বোঝাতে চেয়েছিলেন ।

যদি আপনি যা বোঝাতে চেয়েছিলেন এটি যদি এটি না হয় তবে সম্ভবত এটির আরও ভাল ব্যাখ্যা করা যদি সম্ভবত কিছু নমুনা আউটপুট দিয়ে দেওয়া হত helped

যাই হোক না কেন, আমি এই উত্তরটি পোস্ট করছি তবে এমন কেউ আছেন যারা এই প্রশ্ন / উত্তরকে সহায়ক মনে করেন।

সুতরাং, মূলত, এটি মনে হচ্ছে আপনি কোনও স্ক্রিপ্টের আউটপুট কোনও ফাইলের কাছে বন্দী করাতে চান এবং স্ক্রিপ্টটি চলমান অবস্থায় স্ক্রিপ্টের আউটপুট দেখতে সক্ষম হন।

(টিএল; ডাঃ সংস্করণ: উইন্টি ব্যবহার করুন :

script 2>&1 | wtee logfile.txt)


এই পোস্টের জন্য, আমি একটি ছোট পরীক্ষা ব্যাচ ফাইলটি ব্যবহার করব, তবে আপনার স্ক্রিপ্টটি আপনার প্রয়োজন তত বড় এবং জটিল বা সহজ হতে পারে:

C:\>type a.cmd
@echo off

echo Command: "dir /b a*"
dir /b a*
echo.

echo Command: "dir /b non-existant-file"
dir /b non-existant-file
echo.


আমি যখন এই ব্যাচের স্ক্রিপ্টটি চালিত করি তখন এটি ঘটে:

C:\>a.cmd
Command: "dir /b a*"
a.cmd

Command: "dir /b non-existant-file"
File Not Found

লক্ষ্য করুন যে পরীক্ষার স্ক্রিপ্টে, "dir" কমান্ডের প্রথম প্রয়োগ কার্যকর হয়েছে এবং দ্বিতীয়টি ব্যর্থ হয়। আপনি যখন আপনার স্ক্রিপ্টটি চালাবেন তখন "ত্রুটি বার্তাগুলি" দিয়ে কী ঘটবে তা দেখানোর জন্য আমি এটিই করি।

যদি আমি স্ক্রিপ্টটি চালনা করি এবং আউটপুট ক্যাপচারের জন্য পুনর্নির্দেশ ( ">" ) ব্যবহার করি তবে আমি এটি দেখতে পাচ্ছি

C:\>a.cmd > log.txt
File Not Found

C:\>type log.txt
Command: "dir /b a*"
a.cmd

Command: "dir /b non-existant-file"

C:\>

স্ক্রিপ্টটি চালিত হওয়ার পরে স্ক্রিনে "ফাইল খুঁজে পাওয়া যায়নি" ত্রুটি বার্তাটি লক্ষ্য করুন, এবং আসলে ফাইলটিতে ধরা পড়েনি। কারণ ">" "আউটপুট " ক্যাপচার করে যা এসটিডিআউট প্রবাহে প্রেরণ করা হয়েছে। "ত্রুটি বার্তা" সাধারণত STDERR স্ট্রিমে প্রেরণ করা হয়।

ক্যাপচার "স্বাভাবিক আউটপুট" এবং "ত্রুটি বার্তা" করার জন্য, আপনার কাছে stderr স্ট্রিম, যার দ্বারা নির্দেশিত হয় ক্যাপচার প্রয়োজন "2" মধ্যে "2> & 1" কমান্ড এখানে:

C:\>a.cmd > log.txt 2>&1
C:\>type log.txt
Command: "dir /b a*"
a.cmd

Command: "dir /b non-existant-file"
File Not Found

ইউনিক্সে, একটি মানক কমান্ড রয়েছে: "tee"

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

"টি" কমান্ডটি উইন্ডোজের সাথে মানসম্পন্ন নয়, তবে আপনি উইন্ডোজের জন্য এখানে "টি" এর একটি বিনামূল্যে সংস্করণ ডাউনলোড করতে পারেন: উইন্টি । ডাউনলোড করা প্রোগ্রাম নামকরণ করা হয়: "wtee.exe"

আপনি নীচের মত "wtee.exe" প্রোগ্রাম ব্যবহার করুন।

এটি স্ক্রিপ্ট আউটপুটটিকে "log.txt"আগের মতো ফাইল হিসাবে ক্যাপচার করবে এবং স্ক্রিপ্ট চলাকালীন স্ক্রিনে আউটপুট প্রদর্শন করবে:

C:\>a.cmd 2>&1 | wtee log.txt
Command: "dir /b a*"
a.cmd

Command: "dir /b non-existant-file"
File Not Found

C:\>type log.txt
Command: "dir /b a*"
a.cmd

Command: "dir /b non-existant-file"
File Not Found

0

এই স্ক্রিপ্টটি ls কার্যকর করবে এবং এর আউটপুট লগ.টেক্সট নামে একটি ফাইলে লগ করবে:

exec >log.txt 2>&1
ls

লগ কার্যকর করা হবে না।


1
নোট করুন যে এটি ইউনিক্স / লিনাক্স ধরেছে, তবে আমার অনুমান ওপি উইন্ডোজ সম্পর্কে আলোচনা করে। এছাড়া না একটি স্ক্রিপ্ট চালাতে, কিন্তু কমান্ড আপনার লেখা আউটপুট লগ ইন করে এবং কিভাবে উন্মাদ থামাতে সমালোচনা তথ্য বাদ ...
সেভেন

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