ভেরিয়েবলের কমান্ড লাইন 7-জিপের জন্য ত্রুটির স্থিতি কীভাবে লিখবেন (বা পরিবর্তে পাঠ্য ফাইলে)


5

আমি কিছু ডিরেক্টরি প্যাক করতে এবং ইমেলের মাধ্যমে সংরক্ষণাগারটি প্রেরণে 7-জিপ (আমার ব্যাচের ফাইলগুলিতে) ব্যবহার করি। আমি যখন এই ডিরেক্টরিতে একই সময়ে ব্যাচ ফাইলটি চলমান কিছু ফাইল ব্যবহার করি (আমি টাস্ক শিডিয়ুলারের সাহায্যে ব্যাচ ফাইলগুলি শুরু করি), আমি সতর্কতা বার্তাগুলি প্রক্রিয়াধীন দেখছি। এর পরে, সংরক্ষণাগারটি প্রস্তুত হওয়ার পরে, 7-জিপ এই জাতীয় বার্তা প্রদর্শন করে: ইমেল পাঠানোর আগে "সতর্কতা: 29 টি ফাইল খুলতে পারে না"। যখন এটি ঘটে, আমি %MESSAGE%"29 সতর্কতা অব্যাহত রয়েছে" মান সহ একটি পরিবেশের পরিবর্তনশীল (যেমন কিছু ) সেট করতে এবং ইমেলটির বিষয়বস্তুতে এই বার্তাটি রাখতে সক্ষম হতে চাই। তবে এখনই যা করতে পারে তা হ'ল %ERRORLEVEL%ভেরিয়েবল ব্যবহার । যদি আমি কোনও %MESSAGE%ভেরিয়েবল সেট করতে না পারি , তবে কোনও ফাইলটিতে সতর্কতা বার্তা লেখা সম্ভব, তবে শেষ লাইনটি বের করার জন্য এই ফাইলটিকে বিশ্লেষণ করুন?

উত্তর:


7

আমি আপনাকে 7-জিপ কমান্ড লাইন সংস্করণ (7za.exe) ব্যবহার করার পরামর্শ দিচ্ছি ।

নিচের মত কমান্ড পুনর্চালনা করবে সব আউটপুট (দ্বারা stderr থেকে সহ) Log.txt :

7za a Test.7z *.* >Log.txt 2>&1

অতিরিক্তভাবে, 7-জিপ নীচের প্রস্থান কোডগুলি ফেরত দেয় যা আপনি আপনার ব্যাচ ফাইলে% ERRORLEVEL% দিয়ে ব্যবহার করতে পারেন:

0 = কোনও ত্রুটি নেই।

1 = সতর্কতা (মারাত্মক ত্রুটি (গুলি))। উদাহরণস্বরূপ, এক বা একাধিক ফাইল অন্য কোনও অ্যাপ্লিকেশন দ্বারা লক করা হয়েছিল, সুতরাং সেগুলি সংকুচিত হয়নি।

2 = মারাত্মক ত্রুটি।

7 = কমান্ড লাইনের ত্রুটি।

8 = অপারেশনের জন্য পর্যাপ্ত মেমরি নেই।

255 = ব্যবহারকারী প্রক্রিয়াটি বন্ধ করে দিয়েছেন।


সম্পাদনা করুন: আপনি যদি Compressing <filename>এই সমস্ত লাইন ধারণ করে এমন একটি ভার্বোস লগ না চান তবে পরিবর্তে এই আদেশটি ব্যবহার করুন:

7za a Test.7z *.* | findstr /i /v "pavlov scanning compressing" >Log.txt 2>&1

(উপরের স্যুইচগুলি সহ ফাইন্ডস্ট্র কমান্ডটি উদ্ধৃতিগুলির মধ্যে শব্দযুক্ত সমস্ত লাইনকে বাদ দেয়))


ধন্যবাদ,% ত্রুটিযুক্ত% আমার প্রয়োজন মতো নমনীয় নয়, তবে >xxx.log 2>&1আমার প্রায় প্রয়োজন। প্রায় - কারণ লগ ফাইলটি খুব সুন্দর হবে ... আমার সংরক্ষণাগারে 100k এরও বেশি ফাইল রয়েছে ... তবে এটি ভাল ধারণা, আমি ll trying to use it for brainstorm tomorrow =) can you spell out what is it - 2> & 1` আমি t understand it fully? how it work? by the way, i7z.exe এর পরিবর্তে 7za ব্যবহার করি না তবে তা হয় ব্যাপার না, আমি এই প্রোগ্রামগুলির মধ্যে পার্থক্য দেখছি না
slesar.mira

>Log.txt 2>&1উভয় স্ট্যান্ডার্ড আউটপুট (= 1) এবং স্ট্যান্ডার্ড ত্রুটি (= 2) স্ট্রিমগুলি লগ.টেক্সট এ পুনঃনির্দেশ করবে (আরও দেখুন এখানে )। এছাড়াও, আমি অনুমান করি আপনি 7z.exeও ব্যবহার করতে পারেন, কমান্ড লাইন থেকে খাঁটিভাবে ব্যবহার করার সময় আমি 7za.exe পছন্দ করি prefer
করণ

1
আমি মনে করি না 7-জিপ স্টাডারকে কিছু লিখেছে।
মার্টিনো

দুর্দান্ত লিঙ্ক , আবার আপনাকে ধন্যবাদ! =)
slesar.mira

@ মার্টিনো: নাও হতে পারে, তবে অতিরিক্ত 2> & 1 সেখানে নির্দেশিত কোনও কিছু নিশ্চিত করেছে তা নিশ্চিত করবে। , নিশ্চিত করুন জন্য এটি যোগ এমনকি যদি অ্যাপ্লিকেশন স্বাভাবিকভাবে (এছাড়াও, কেন নয়? আইএমও এটা stderr হবে লিখতে না কোন ক্ষতি উচিত ত্রুটি stdout- এ পরিবর্তে stderr সরাসরি)।
করণ

1

7-জিপ ত্রুটি এবং সতর্কতা বার্তা সহ স্ট্যান্ডআউটে এর সমস্ত বার্তা লিখে । এর অর্থ আপনি স্টডআউটকে কোনও ফাইলে পুনর্নির্দেশ করে এটি থেকে সমস্ত আউটপুট সংগ্রহ করতে পারেন। >output_filenameআপনি 7-জিপ-এ যা যা যুক্তি দিচ্ছেন তার পরে কমান্ড লাইনে যুক্ত হয়ে এটি করা যেতে পারে । উদাহরণ স্বরূপ:

7z args... >output_filename

এর পরে, আপনার আউটপুট ফাইলটি বিশ্লেষণ করতে সক্ষম হতে হবে এবং "সতর্কতা" বা এর মধ্যে যা আছে তার সাথে লাইনগুলি সন্ধান করতে হবে। আপনি শর্তসাপেক্ষে এটি করতে পারেন %ERRORLEVEL%শূন্য অ- এর মান , যা নির্দেশ করে যে কিছু সমস্যা ছিল কিনা, বা বিশেষত এটির জন্য 1যার অর্থ অ-মারাত্মক সতর্কতা ছিল on

ডকুমেন্টেশন অনুসারে এগুলি হ'ল সম্ভাব্য প্রস্থান কোড ( %ERRORLEVEL%মান):

কোড অর্থ
==== ========
0 কোনও ত্রুটি নেই
1 সতর্কতা (অ মারাত্মক ত্রুটি (গুলি))। উদাহরণস্বরূপ, এক বা একাধিক ফাইল
            অন্য কোনও অ্যাপ্লিকেশন দ্বারা লক করা হয়েছিল , সুতরাং সেগুলি সংকুচিত হয়নি।
2 মারাত্মক ত্রুটি
7 কমান্ড লাইনের ত্রুটি
8 অপারেশনের জন্য পর্যাপ্ত মেমরি নেই
255 ব্যবহারকারী প্রক্রিয়াটি বন্ধ করে দিয়েছে

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