আপনার আসল স্ক্রিপ্টটি নিম্নরূপে রেখাযুক্ত করে:
@echo on
কমান্ড প্রম্পটকে ব্যাচ ফাইলে প্রতিটি কমান্ড কার্যকর করার পূর্বে মুদ্রণ করতে বলে Tell এটি ঠিক তাই এটি করার আগে আপনি এটি "কি" দেখতে পাচ্ছেন।
cd "C:\Users\MVD21\Desktop\test"
সি হ্যাঙ্গস ডি ডিরেক্টররিটি যা আমি আশা করি সেই পথটি যেখানে আপনি সমস্ত ফাইল জিপ আপ করতে চান।
FOR %%i IN (C:\Users\MVD21\Desktop\test) DO 7z.exe a "%~ni.7z" "%i"
থেকে প্যারামিটার INএখানে (C:\Users\MVD21\Desktop\test)। পরামিতিটির সাথে মান নির্ধারিত হয়ে এটি লুপ "বডি" (কীওয়ার্ডের পিছনের ক্রিয়া DO) ঠিক একবার সম্পাদন %iকরবে C:\Users\MVD21\Desktop\test। এটি আপনার যা ইচ্ছা তা করে না তা অবাক হওয়ার কিছু নেই! দেখে মনে হচ্ছে এটি সম্পূর্ণ ডিরেক্টরিটি একটি একক .7z ফাইলটিতে জিপ করবে।
যদি এটি কিছু না করে তবে সম্ভবত এটি এর পথ খুঁজে পাচ্ছে না 7z.exe। যদি সেই ফাইলটি বর্তমান ডিরেক্টরিতে না থাকে ( testউপরে উল্লিখিত ডিরেক্টরিটি), তবে এটিতে হবে PATH( %PATH%পরিবেশে পরিবর্তনশীল; echo %PATH%এটি বর্তমানে কী সেট করা আছে তা দেখার জন্য একটি শেল দিয়ে চেষ্টা করুন )। অন্যথায় আপনাকে 7z.exeবর্তমান ডিরেক্টরিতে অনুলিপি করতে হবে বা এটি যেখানে রয়েছে তার কোনও নিখুঁত পথ নির্দিষ্ট করতে হবে (যেমন, উদাহরণস্বরূপ "C:\Program Files\7-zip\7z.exe" ...)।
pause
স্ক্রিপ্টটি শেষ হয়ে গেলে, এই কীওয়ার্ডটি শেলটিকে কেবলমাত্র তাত্ক্ষণিকভাবে প্রস্থান করার পরিবর্তে কমান্ড প্রম্পটটি প্রবেশ করার বা বন্ধ করার জন্য অপেক্ষা করার জন্য শেলকে বলে।
যখন আপনি একটি ব্যাচ স্ক্রিপ্ট তৈরি করছেন (বা, প্রকৃতপক্ষে, কোডের সাথে সম্পর্কিত অন্য যে কোনও কিছুই), আপনি পুরো স্ক্রিপ্টটিকে একচেটিয়া অনুলিপি-হিসাবে বোঝেন নি যা বোঝার (চেষ্টা করার) চেষ্টা করে না, এবং পরিবর্তে আপনার বিচ্ছিন্ন করে দেয় উপ-অংশগুলির মধ্যে সমস্যা যা আপনি স্বতন্ত্রভাবে বের করতে পারেন, তারপরে সেগুলি একত্রে হুক করুন। এটি আপনাকে স্বাধীনভাবে সমস্যাগুলি সমাধান করতে সক্ষম করবে এবং অন্য কারও কাছে আপনার সমস্ত কাজ করার জন্য বলার পরিবর্তে সমাধান তৈরি করতে সক্ষম হবে । আমি এটি সুপারিশ।
আপনার ক্ষেত্রে, আপনার সমস্যার নিম্নলিখিত উপ-উপাদান রয়েছে:
- একটি প্রদত্ত ডিরেক্টরিতে অন্তর্ভুক্ত প্রতিটি ফাইলকে আইট্রেট ওভার (লুপ মাধ্যমে)।
- প্রতিটি প্রদত্ত ফাইলের জন্য,
7zইউটিলিটিটি চাওয়ার মাধ্যমে এটি .7z ফাইলে রাখুন ।
ইতিমধ্যে সেখানে কারও উত্তর থাকার সম্ভাবনা রয়েছে যা আপনার নির্দিষ্ট প্রয়োজনীয়তার সমাধান করে পৃথক পৃথকভাবে আরও সাধারণ টুকরো খুঁজে পেতে সক্ষম হওয়ার চেয়ে কম।
এই প্রশ্নটি, 'ব্যাচের স্ক্রিপ্টে ডিরেক্টরিতে প্রতিটি ফাইলকে কীভাবে করবেন' আপনার সমস্যার অর্ধেক সমাধান করে।
উত্তরের জোড় হ'ল আপনি কেবল এই অংশটি স্ট্যাকওভারফ্লো উত্তর থেকে শুরু করুন:
for /f "usebackq delims=|" %%f in ('dir /b "c:\program files"') do echo %%f
এবং অংশ যেখানে এটি তা পরিবর্তনের কিছু কাজ ( echo %%f) কি করতে আপনি কি করতে চান । আমি জানি যে আপনার সেই অংশটি পরিবর্তন করা দরকার, কারণ আমি স্ক্রিপ্টটির পাঠ্য বিশ্লেষণ করেছি এবং প্রতিটি অক্ষর এবং প্যারামিটারের অর্থ কী তা বুঝতে পেরেছি, তাই আমি আমার নিজের কোডটি কোথায় সন্নিবেশ করতে চাই তা নিয়ে যুক্তি করতে পারি।
এখানে কিছু "এয়ার কোড" (অরক্ষিত!) রয়েছে:
for /f "usebackq delims=|" %%f in ('dir /b "C:\Users\MVD21\Desktop\test"') do 7z.exe a "%~ni.7z" "%i"
@echo onএবং pauseবিবৃতি সর্বোপরি, ভাল অভ্যাস তাই তাদের যে চলে যাবে। এবং আপনি সম্ভবত যে রাখা চাইবেন cdবিবৃতি খুব, আপনার ফাইল সেই পথ মধ্যে অবস্থিত হয় পারেন।
সুতরাং যে আমাদের ছেড়ে কি?
@echo on
cd "C:\Users\MVD21\Desktop\test"
for /f "usebackq delims=|" %%f in ('dir /b "C:\Users\MVD21\Desktop\test"') do 7z.exe a "%~nf.7z" "%f"
pause
আপনি যদি "এটি কাজ করে না!" দিয়ে উত্তর দেয় তবে আমি আপনাকে সাহায্য করব না। যদি আপনি এটি চেষ্টা করে থাকেন এবং এটি কার্যকর না হয়, আপনি অবশ্যই আমাকে নিম্নলিখিত তথ্য মন্তব্যে জানাতে হবে :
- আপনি যখন এই কমান্ডগুলি চালাবেন বা কোনও ব্যাচের ফাইলে রাখবেন এবং সেগুলি চালাবেন তখন আপনি কমান্ড প্রম্পটে কোন সঠিক ত্রুটি বার্তা পাবেন? সংক্ষিপ্তকরণ করবেন না; আউটপুটটি সরাসরি অনুলিপি করুন এবং পেস্ট করুন (এটি অনেকটা হলেও http://pastebin.com এ রাখুন )।
- আপনার কী মনে হচ্ছে ত্রুটি বার্তাটি আপনাকে বলছে যে সমস্যাটি হচ্ছে?
- আপনার 7-জিপ ইনস্টলেশনটি কোথায় অবস্থিত (ফাইলের পাথ)?
- আপনার 7-জিপ ইনস্টলেশনের ফাইলের অবস্থানটি
PATHপরিবেশের বিষয়বস্তুর অন্তর্ভুক্ত ? ( echo %PATH%একটি cmdঅনুরোধ সহ উপরে বর্ণিত হিসাবে এটি পরীক্ষা করুন ।)