ব্যাচ ফাইল - ডিস্কটি বিভক্ত হয়েছে কিনা তা জেনে নিন


1

আমি উইনপ এনভায়রনমেন্টে কাজ করছি, ডিস্ক 0 পার্টিশন করা থাকলে বা কীভাবে তথ্য পাবেন তা প্রতিটি ক্ষেত্রে সুনির্দিষ্ট কমান্ড প্রবর্তন না করে, তবে এই ব্যাচ ফাইলে কীভাবে সঠিকভাবে কাজ করা যায়?

set part_inst=wmic partition list instance

যদি ডিস্কটি আরম্ভ না করা হয় তবে তা ফিরে আসবে:

No Available Instance.

অন্যথায় পার্টিশন পাওয়া গেলে তা ফিরে আসবে:

Index
0
1
2

এই পদ্ধতিটি আরম্ভ করার জন্য ব্যাচ ফাইলে এই তথ্যটি কীভাবে ব্যবহার করবেন

if %part_inst% == "No Available Instance." (
Rem execute sequence_1 of commands if disk is **_not partitioned_**
) else (
Rem execute sequence_2 of commands if disk is **_partitioned_**
)

দৃ plan় পরিকল্পনার মতো দেখতে, এটি ঠিক কোথায় ব্যর্থ হয়? আমি কেবলমাত্র সম্ভাব্য সমস্যাটি দেখছি যে যদি আইএফ লাইনে% part_inst% এর আশেপাশে কোনও উদ্ধৃতি নেই।
এলিয়াদটেক

হ্যাঁ আমি উদ্ধৃতিগুলি সরিয়ে দিতে ভুলে গেছি, কমান্ড প্রম্পটে সিনট্যাক্সটি হ'ল: পার্ট_ইনস্ট = "কোনও উপলভ্য উদাহরণ নেই" "
এম আব্দেলহফিদ

উত্তর:


1

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

@echo off

set part_inst=

for /f "usebackq tokens=2 delims==" %%A in (
`wmic partition list instance /format:list ^| find "="`
) do set part_inst=%%A

if not defined part_inst (
REM execute sequence_1 of commands if disk is **_not partitioned_**
) else (
REM execute sequence_2 of commands if disk is **_partitioned_**
)

যখন part_inst সংজ্ঞায়িত করা হয় না "কেন এটি থাকে ?
এম আব্দেলহফিদ

@ madoui20032003 যখন কোনও ভেরিয়েবল সংজ্ঞায়িত না হয় এটি খালি হওয়া উচিত, তবে যতক্ষণ সঠিক ক্রমটি কার্যকর করা যায় এটি সম্ভবত এটি কোনও সমস্যা নয়।
31415

হ্যাঁ স্ক্রিপ্টটি ঠিকঠাকভাবে কাজ করে এটি আমার ব্যাচের ফাইলের একটি লুকানো চরিত্র, দুঃখিত।
এম আব্দেলহফিদ

@ madoui20032003 আপনি এটি বাছাই করে দেখে ভাল।
31415

PS: কেবলমাত্র একটি হার্ড ডিস্ক থাকা অবস্থায় স্ক্রিপ্টটি ঠিকঠাক কাজ করে এবং কোনও ইউএসবি স্টোরেজ অবশ্যই প্লাগ ইন করতে হবে না disk কেবলমাত্র ডিস্ক 0-তে পরীক্ষা করার জন্য কোনও পরামর্শ আছে?
এম আব্দেলহফিদ

1

একটি নির্বাহিত কমান্ডের ফলাফলটি একটি ভেরিয়েবলে সঞ্চয় করতে, আপনি এটি ব্যবহার করে সহজেই নির্ধারণ করতে পারবেন না set

একটি জনপ্রিয় পদ্ধতি হ'ল forস্ট্যাকওভারফ্লো প্রশ্ন উইন্ডোজ ব্যাচ ফাইলগুলিতে বর্ণিত হিসাবে ব্যবহার করা : একটি কমান্ডের ফলাফলের সাথে একটি পরিবর্তনশীল কীভাবে সেট করবেন?

আপনার ডাব্লুমিক আউটপুট থেকে খালি লাইনগুলি কীভাবে সরিয়ে ফেলতে হবে তার পরামর্শ অনুসারে এটি সংযুক্ত করার দরকার হতে পারে ? :

for /f "skip=1 delims=" %%a in (
  'wmic partition list instance' ^| findstr /r /v "^$"'
) do @set part_inst=%%a

কমান্ড প্রম্পটে কার্যকর করা হলে, উভয় ক্ষেত্রেই "নতুন ডিস্ক" "পার্টিশনযুক্ত ডিস্ক",% part_inst% পরিবর্তনশীল নাল?
এম আব্দেলহফিদ

আহ, আমি এখন সমস্যাটি দেখতে পাচ্ছি। wmicএকটি নতুন লাইনের সাথে শেষের আউটপুট । সুতরাং আউটপুট উপরের শেষ পুনরাবৃত্তিটি ভেরিয়েবল সাফ করে। CALLআউটপুটটি সঠিকভাবে পার্স করার জন্য আপনার ব্যাচ ফাইলে একটি সাবরুটিনের প্রয়োজন হতে পারে ।
ডের হচস্টাপলার

হ্যাঁ আমি যা খুঁজছিলাম আপনি বলতে পারেন যে প্রশ্নের উত্তর দেওয়া হয়েছে।
এম আব্দেলহফিদ

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