প্রথমে আসুন পর্যালোচনা করা যাক rm -rf
:
C:\Users\ohnob\things>touch stuff.txt
C:\Users\ohnob\things>rm -rf stuff.txt
C:\Users\ohnob\things>mkdir stuff.txt
C:\Users\ohnob\things>rm -rf stuff.txt
C:\Users\ohnob\things>ls -l
total 0
C:\Users\ohnob\things>rm -rf stuff.txt
তিনটি পরিস্থিতি রয়েছে যেখানে rm -rf
সাধারণত ব্যবহৃত হয় যেখানে এটি প্রত্যাশিত হয় 0
:
- নির্দিষ্ট পাথের অস্তিত্ব নেই।
- নির্দিষ্ট পাথ বিদ্যমান এবং এটি একটি ডিরেক্টরি।
- নির্দিষ্ট পাথ বিদ্যমান এবং এটি একটি ফাইল।
আমি সম্পূর্ণ অনুমোদনের জিনিসটি অগ্রাহ্য করতে যাচ্ছি, তবে উইন্ডোজের জিনিসগুলিতে যে কোনওভাবেই নিজেরাই লেখার অনুমতি অস্বীকার করার চেষ্টা করে না (ঠিক আছে, এটি একটি রসিকতা হিসাবে বোঝানো হয়েছে ...)।
প্রথমে 0 তে সেট ERRORLEVEL
করুন এবং তারপরে পাথটি কেবলমাত্র উপস্থিত থাকলে মুছে ফেলুন, এটি ডিরেক্টরি কিনা তা নির্ভর করে বিভিন্ন কমান্ড ব্যবহার করে। পাথের অস্তিত্ব না থাকলে 0 তে IF EXIST
সেট ERRORLEVEL
করা হয় না, তাই ERRORLEVEL
স্বাভাবিক rm -rf
ব্যবহারের অনুকরণ করে এমনভাবে সাফল্য সঠিকভাবে সনাক্ত করার জন্য প্রথমে 0 এ সেট করা প্রয়োজন । এর RD
সাথে গার্ডিং IF EXIST
করা প্রয়োজনীয় কারণ লক্ষ্যটির অস্তিত্ব না থাকলে RD
ভিন্ন rm -f
, ত্রুটি ছুঁড়ে দেবে।
নিম্নলিখিত স্ক্রিপ্ট স্নিপেট অনুমান করে যে DELPATH পূর্বনির্ধারিত। (এই নিরাপদ যখন আপনি ভালো কিছু করতে হয় SET DELPATH=%1
। নির্বাণ চেষ্টা করুন ECHO %1
একটি .cmd
এবং এটি তার মধ্যে ব্যবধান সহ একটি আর্গুমেন্ট ক্ষণস্থায়ী এবং দেখুন সেখানে কি নিজের জন্য এরকম)। স্নিপেট সম্পূর্ণ হওয়ার পরে, আপনি ব্যর্থতাটি পরীক্ষা করতে পারেন IF ERRORLEVEL 1
।
: # Determine whether we need to invoke DEL or RD or do nothing.
SET DELPATH_DELMETHOD=RD
PUSHD %DELPATH% 2>NUL
IF ERRORLEVEL 1 (SET DELPATH_DELMETHOD=DEL) ELSE (POPD)
IF NOT EXIST %DELPATH% SET DELPATH_DELMETHOD=NOOP
: # Reset ERRORLEVEL so that the last command which
: # otherwise set it does not cause us to falsely detect
: # failure.
CMD /C EXIT 0
IF %DELPATH_DELMETHOD%==DEL DEL /Q %DELPATH%
IF %DELPATH_DELMETHOD%==RD RD /S /Q %DELPATH%
পয়েন্টটি হ'ল, পরিবেশ যখন পসিক্সের সাথে খাপ খায় তখন সবকিছুই সহজ। অথবা আপনি যদি একটি ন্যূনতম এমএসওয়াইএস ইনস্টল করেন এবং কেবল এটি ব্যবহার করেন।