ব্যাচ স্ক্রিপ্টে rmdir কমান্ড চলাকালীন "ডিরেক্টরিটি খালি নয়" ত্রুটিটি কীভাবে সমাধান করবেন?


92

আমি একটি ব্যাচ স্ক্রিপ্ট তৈরি করছি এবং স্ক্রিপ্টের অংশটি একটি ডিরেক্টরি এবং এর সমস্ত উপ-ডিরেক্টরি মুছে ফেলার চেষ্টা করছি। সাব-ডিরেক্টরি ফাঁকা না হওয়া নিয়ে আমি মাঝে মাঝে ত্রুটি পেয়ে যাচ্ছি। আমি অপরাধী হিসাবে সূচীকরণ সম্পর্কে একটি নিবন্ধ পড়েছি। আমি ডাব্লু সার্চ অক্ষম করেছিলাম তবে শেষ পর্যন্ত আবার ত্রুটি পেয়েছি। আদেশটি এখানে:

rmdir /S /Q "C:\<dir>\"

উইন্ডোজ আপনাকে যে ধরণের ফাইল সম্পর্কে সতর্ক করে সে সম্পর্কে কি আমি কিছু তথ্য জিজ্ঞাসা করতে পারি? আমার জন্য, এটি কেবল পিডিএফ ফাইলগুলির সাথে ঘটে যখন আমি সেগুলি সরা / অনুলিপি করি।
জেক স্টিভেনস-হাশ

উত্তর:


88

হ্যারি জনস্টন যেমন উল্লেখ করেছেন তেমন সমস্যাগুলিও আমি अनुभव করেছি। rmdir /s /qঅভিযোগ করবে যে কোনও ডিরেক্টরি ফাঁকা নয় যদিও /sআপনার জন্য শূন্যকরণটি বোঝানো হচ্ছে! আমি মনে করি এটি ব্যক্তিগতভাবে উইন্ডোজের একটি বাগ।

delডিরেক্টরিটি নিজেরাই মুছে ফেলার আগে আমার কাজের দিকনির্দেশনা হ'ল ডিরেক্টরিতে থাকা সমস্ত কিছু:

del /f /s /q mydir 1>nul
rmdir /s /q mydir

( 1>nulস্ট্যান্ডার্ড আউটপুটটি আড়াল করে delকারণ অন্যথায় এটি মুছে ফেলা প্রতিটি ফাইলকে তালিকাভুক্ত করে))


আমি একটি দৃশ্যে দৌড়েছি যেখানে কিছু উপ ডিরেক্টরি mydirএকই "খালি নয়" ত্রুটি তৈরি করে। সুতরাং আমি সেই ডিরেক্টরিগুলির প্রত্যেকটিতে ফাইলগুলিতে cdপ্রবেশ করতে mydirএবং সম্পাদন করতে delহয়েছিল। শেষ পর্যন্ত এটি কাজ করেছিল, তবে যদি আমি তৃতীয়বারের মতো আরেকটি সাবলিলে পুনরায় পুনর্বার প্রক্রিয়াটি করতে চাইতাম তবে আমি খুব পরাজিত বোধ করতাম।
গুলফ্লাম

@ গফুল্লাম যতদূর আমি স্মরণ করি, আমার পদ্ধতিটি কোনও গভীরতার জন্য পুনরাবৃত্ত সাব-ডাইরেক্টরিগুলিতেও কাজ করা উচিত। এটা কি del /sকরে।
বফিনব্রেন

এক্সপ্লোরার (সম্ভবত mkdir => NO!) ব্যবহার করে একটি ফোল্ডার যুক্ত করা (এবং নাম পরিবর্তন করা) কেবল rd /s /q mydirকমান্ড ব্যবহার করে অপসারণের কাজ শেষ করুন ।
মাস্টার ডিজন

4
ঠিক আছে, আমি মনে করি উইন্ডোজ মুছে ফেলা এবং লিনাক্সে স্থানান্তর করা এই ব্যথার চেয়ে অনেক বেশি সহজ :)
রজনীস কোডার

4
@ রাজনিশকডার উইন্ডোজ সহ বাস করা মূলত ওয়ার্কআরউন্ডের একটি বিশ্ব। এই বিশেষ সমস্যাটি উইন্ডোজ 10 এর সাথে অন্যান্য সমস্যার তুলনায় কিছুই নয়!
বফিনব্রেন

47

আমি এই সমস্যাটির সাথে পরিচিত। সহজতম কাজটি শর্তসাপেক্ষে অপারেশনটির পুনরাবৃত্তি করা। আমি এটি একটানা দু'বার ব্যর্থ হতে দেখিনি - যদি না খোলা ফাইল বা অনুমতি সংক্রান্ত সমস্যা না থাকে তবে অবশ্যই!

rd /s /q c:\deleteme
if exist c:\deleteme rd /s /q c:\deleteme

11
পবিত্র মলি, এটি এখনও কাজে লাগেনি it কি #!% # @! মাইক্রোসফট
স্যাম বি

IF EXISTলুকায় Access is deniedএবং অন্যান্য পরিস্থিতিতে। আমি DIR c:\deletemeসমস্ত কিছুর আগে কিছু ভালো লেগেছে এবং এরোস চেক করেছি।
it3xl

উইন্ডোজ এক্সপ্লোরারকে একটি উপ-ডিরেক্টরিতে খোলা রাখা বা অন্যথায় ব্রাউজ করার ফলে এটি পরপর দু'বার ব্যর্থ হয়। সুতরাং নিশ্চিত হয়ে নিন যে আপনি এটি তৃতীয়বার জিজ্ঞাসা করেছেন (যা আসলে কাজ করেছিল)
জেক স্টিভেনস-হাশ

আসলে এটি আমার জন্য একটানা দু'বার ঘটেছিল কিছুই খোলা নেই বা অনুমতি সংক্রান্ত সমস্যা ছাড়াই। আমার রেকর্ড সাতবার। @ বোফিনব্রাইএন এর পদ্ধতির প্রস্তাব দিন।
জেক স্টিভেনস-হাশ

আমি কেবল প্রথম কমান্ড দৌড়েছি। তারপরে ফোল্ডারে ডান-ক্লিক করা হয়েছে> বৈশিষ্ট্য> 'কেবল পঠনযোগ্য' বৈশিষ্ট্যটি আনচেক করুন> প্রয়োগ করুন। ভায়োলা! ফোল্ডারটি অবশেষে অদৃশ্য হয়ে গেল।
স্টিভেন 7mwesigwa

21

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

chkdsk /F e:

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


নিখুঁত, আমি আধ ঘন্টা ধরে চেষ্টা করছিলাম
ট্রেक्स

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


7

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

আমি একটি ফাইল খালি ফোল্ডারে সরানোর পরে। আমি খালি খালি ফোল্ডারটি মুছতে সক্ষম হয়েছি


4
মন্তব্য করে লিখুন দয়া করে।
ভাইবার

মজাদার. সম্ভবত ওপিএস দৃশ্যের সাথে প্রাসঙ্গিক নয়।
হ্যারি জনস্টন

পবিত্র মোলি, এই সমস্ত সমাধানগুলিতে আক্ষরিক অর্থেই এটিই কাজ করেছিল!
সেকা

3

@ গফুল্লাম @ বোফিনব্রাইএন এর উত্তরে একটি মন্তব্যে যেমন বলেছিলেন যে <dir>আপনি নিজেরাই মুছে ফেলছেন সেগুলি ফাইলগুলিতে নাও থাকতে পারে: সেখানে <dir>"ডিরেক্টরিটি খালি নয়" বার্তা পেতে পারে এমন সাব-ডাইরেক্টরিগুলি থাকতে পারে এবং তারপরে একমাত্র সমাধান হতে পারে ডিরেক্টরিগুলিতে পুনরাবৃত্তভাবে পুনরাবৃত্তি করুন, ম্যানুয়ালি তাদের সমস্তযুক্ত ফাইল মুছে ফেলুন ... আমি rmইউনিক্স থেকে একটি বন্দর ব্যবহার করার সিদ্ধান্ত নিয়েছে । rm.exeগিট বাশ, মিনজিডাব্লু, সাইগউইন, জ্ঞানউইন 32 এবং অন্যান্যদের সাথে আসে। আপনার প্যাথ-এ এটির প্যারেন্ট ডিরেক্টরি থাকতে হবে এবং তারপরে আপনি ইউনিক্স সিস্টেমে যেমন চালিত হন তেমন চালানো দরকার।

ব্যাচের স্ক্রিপ্ট উদাহরণ:

set PATH=C:\cygwin64\bin;%PATH%
rm -rf "C:\<dir>"

2

আমার জন্য যা কাজ করেছে তা নিম্নলিখিত। আমি হাজির হলাম আরএমডিআইআর কমান্ডটি প্রায়শই "ডিরেক্টরি খালি নয়" জারি করবে ...

:Cleanup_Temporary_Files_and_Folders

Erase /F /S /Q C:\MyDir

RMDir /S /Q C:\MyDir
If  Exist  C:\MyDir  GoTo Cleanup_Temporary_Files_and_Folders

2

আমার কাছে "সি: \ ব্যবহারকারীদের \ ব্যবহারকারীর নাম \ ওয়ানড্রাইভ \ ফন্ট" ছিল, যা এমকিলিঙ্কড (/ ডি) থেকে "সি: \ উইন্ডোজ \ ফন্ট" ছিল এবং আমিও একই সমস্যা পেয়েছি। আমার ক্ষেত্রে

সিডি "সি: \ ব্যবহারকারী \ ব্যবহারকারীর নাম \ ওয়ানড্রাইভ"

আরডি / গুলি ফন্টস

ওয়াই (ক্রিয়াটি নিশ্চিত করতে)

আমাকে সাহায্য করে ছিল. আমি আশা করি, এটি আপনাকেও সহায়তা করে; ডি


4
ব্যাচ চালানোর সময় নিশ্চিতকরণের প্রয়োজনীয়তা এড়াতে / কিউ যুক্ত করুন।
জোনাথন রোজেন

1

আমি আমার ক্ষেত্রে আমি ফোল্ডারটি ঠিক এর মতো রুট ডিরেক্টরিতে স্থানান্তরিত করেছি।

move <source directory> c:\

এবং তারপর ডিরেক্টরি সরানোর জন্য কমান্ড চালানো

rmdir c:\<moved directory> /s /q

4
rmdir c:\<moved directory> /s /qসঠিক উত্তরটি
লালেঙ্গুয়া

4
এটি সঠিক উত্তর নয়। রুটে কোনও ফোল্ডার মোছা একই বার্তাগুলির কারণ হতে পারে: ফোল্ডারটি খালি নয়।
গাংনাস

আমি জানি এটি একটি পুরানো সুতো। এটি কেবল আমার জন্য কাজ করতে চেয়েছিল ...
ম্যানুয়েল রিভেরা

1

rd /sনির্দিষ্ট ফাইলগুলি মুছতে অস্বীকার করার কারণটি সম্ভবত সম্ভবত ডিরেক্টরিতে থাকা ফাইলগুলিতে পুনরায় ফাইল বৈশিষ্ট্যের কারণে হয়।

এটি ঠিক করার উপযুক্ত উপায় হ'ল আপনি প্রথমে সমস্ত ফাইলের বৈশিষ্ট্যগুলি পুনরায় সেট করেছেন তা নিশ্চিত করা:

attrib -r %directory% /s /d
rd /s %directory%

লুকানো বা সিস্টেম ফাইলের মতো অন্য কেউ থাকতে পারে, তাই আপনি যদি এটি নিরাপদে খেলতে চান তবে:

attrib -h -r -s %directory% /s /d
rd /s %directory%

0

হ্যারি জনস্টনের উত্তরের অনুরূপ, আমি কাজ না করা অবধি লুপ করি।

set dirPath=C:\temp\mytest
:removedir
if exist "%dirPath%" (
    rd /s /q "%dirPath%" 
    goto removedir
)

0

উইন্ডোজ মাঝে মাঝে "ডিজাইন দ্বারা ভাঙ্গা" হয়, তাই আপনাকে একটি খালি ফোল্ডার তৈরি করতে হবে এবং তারপরে ব্যাকআপ মোডের সাথে "ফাঁকা ফোল্ডার" দিয়ে "ভাঙা ফোল্ডার" মিরর করতে হবে।

robocopy - cmd copy utility

/copyall - copies everything
/mir deletes item if there is no such item in source a.k.a mirrors source with
destination
/b works around premissions shenanigans

এন খালি দির এভাবে তৈরি করুন:

mkdir empty

এর মতো খালি দিয়ে ভাঙা ফোল্ডারটি ওভাররাইট করুন:

robocopy /copyall /mir /b empty broken

এবং তারপরে সেই ফোল্ডারটি মুছুন

rd broken /s
rd empty /s

যদি এটি সাহায্য না করে, পুনরায় চালু করতে ক্লিক করে পুনরুদ্ধার মোডে আবার এই কমান্ড চালানোর চেষ্টা করে শিফট ধরে "কমান্ড প্রম্পট সহ পুনরুদ্ধার মোডে" পুনরায় চালু করার চেষ্টা করুন


হ্যাঁ, আমি মনে করি রবোকপিটি ওপিএস দৃশ্যে কাজ করবে, কারণ এটি স্বয়ংক্রিয়ভাবে ব্যর্থ ক্রিয়াকলাপগুলির পুনরায় চেষ্টা করে। /W:0অপ্রয়োজনীয় বিলম্ব এড়াতে আপনি সম্ভবত উল্লেখ করতে চান । আপনি হয়ত চাইবেন না /bকারণ এর জন্য প্রশাসনিক সুযোগসুবিধা দরকার। পুনরুদ্ধার মোড এই প্রশ্নের সাথে প্রাসঙ্গিক নয়, কারণ আমরা একটি ব্যাচের স্ক্রিপ্টের কথা বলছি, কেউ ম্যানুয়ালি ডিরেক্টরি মুছে ফেলার চেষ্টা করছেন না।
হ্যারি জনস্টন

-1

আমি নিম্নলিখিত সম্ভাব্য কারণগুলি সম্পর্কে ভাবতে পারি:

  1. এমন ফাইল বা উপ-ডিরেক্টরি রয়েছে যাতে উচ্চতর অনুমতি প্রয়োজন
  2. কেবলমাত্র ডাব্লু অনুসন্ধান দ্বারা নয়, তবে আপনার ভাইরাস স্ক্যানার বা অন্য যে কোনও কিছু দ্বারা ব্যবহৃত ফাইল রয়েছে

১. এর জন্য) আপনি runas /user:Administratorউচ্চতর সুবিধাগুলি পেতে বা কনটেক্সট মেনুর মাধ্যমে প্রশাসক হিসাবে ব্যাচ ফাইলটি শুরু করতে চেষ্টা করতে পারেন । যদি এটি সহায়তা না করে, তবে এমনকি প্রশাসকেরও অধিকার নেই। তারপরে আপনাকে ডিরেক্টরিটির মালিকানা নিতে হবে।

২.) প্রসেস এক্সপ্লোরার ডাউনলোড করুন, ক্লিক করুন Find/Find handle or DLL...বা টিপুন Ctrl+F, ডিরেক্টরিটির নাম টাইপ করুন এবং এটি কে ব্যবহার করে তা সন্ধান করুন। ডিরেক্টরিটি ব্যবহার করে এমন অ্যাপ্লিকেশনটি বন্ধ করুন, যদি সম্ভব হয়।


মেশিনগুলির প্রশাসক অ্যাকাউন্ট অক্ষম করা আছে। আমি অ্যাডমিন গ্রুপে আছি তবে আমি প্রশাসকের পাসওয়ার্ড সম্পর্কে অবগত নই। অনুমতি ইস্যু পেতে অন্য কোন পরামর্শ? কেউ ব্যাচ থেকে অন্য প্রোগ্রাম কল করার কথা বলেছেন (যেমন ভিবিএ)।
মায়হেম

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