এমন ব্যাচ ফাইল কীভাবে তৈরি করা যায় যা `বিন` বা` `জেজ named নামের সমস্ত ফোল্ডার পুনরাবৃত্তভাবে মুছে দেয়?


31

আমার পিসির কোনও ফোল্ডারে সমস্ত binobjফোল্ডার মুছতে হবে have সুতরাং, আমি এটি করার জন্য একটি ব্যাচ ফাইলের কথা ভাবছি তবে আমি উইন্ডোজে ব্যাচিং ফাইলের সাথে ফামালিয়ার নই। সাহায্য করুন.

[সম্পাদনা]

ব্যবহারকারীর সাথে আলোচনার পরে DMA57361, আমি বর্তমান সমাধানে পৌঁছেছি (এখনও সমস্যা হচ্ছে যদিও, আমাদের মন্তব্য দেখুন):

একটি .bat ফাইল তৈরি করুন এবং নীচের কমান্ডটি পেস্ট করুন:

start for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s/q "%%d"

অথবা

start for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s "%%d"

@ DMA57361: আমি যখন আপনার স্ক্রিপ্টটি চালাচ্ছি তখন আমি নীচের ত্রুটিটি পাই। কোন ধারণা?

বিকল্প পাঠ


@ নাম - আপনি কেন চালাচ্ছেন for \/d \/r ...- এর পরিবর্তে ডাবল-স্ল্যাশ কেন for /d /r ...? এবং শেষে "সম্পূর্ণ" সংস্করণটি চালানো /q- যেমনটি আমি বলেছি - সতর্কতা ছাড়াই সমস্ত কিছু মুছে ফেলা হয় ফলে কোনও আউটপুট ফেরত আসে না (অর্থাত্ এটি যখন আপনাকে কাজ করে না, কেবল তখনই এটির ত্রুটি থাকে তখন), আপনি কি দ্বিতীয়টি নিশ্চিত? উপরে রান সঠিকভাবে কাজ করে না?
DMA57361

@ নাম এই রানটিও একই নয় - চিত্রটিতে আপনার কমান্ডটি শুরু হয় for / %d in এবং হয় না for /d /r . %d in- আপনাকে নীচের পুরো কমান্ডটি ব্যবহার করতে হবে , প্রতিটি বিটের আলাদা আলাদা ফাংশন রয়েছে এবং এটি গুরুত্বপূর্ণ।
DMA57361

@ নাম ওপ্পস, আমার ক্ষমা, আপনি পুরোপুরি ঠিক বলেছেন, এটি প্রথম কয়েকটি সুইচ প্রিন্ট করে না! যাইহোক, এটি ত্রুটিটি ফেলে দেয় না এবং আমার কাছে এটি সঠিকভাবে কাজ করে বলে মনে হচ্ছে। আপনি কি ব্যাচ ফাইলের মধ্যে থেকে চালানোর চেষ্টা করার পরিবর্তে কমান্ড লাইন থেকে কমান্ডটি চালানোর চেষ্টা করেছেন?
DMA57361

হুঁ, কেমন আশ্চর্য। সম্ভবত আপনার উইন 7 ব্যাচের সাথে আমার উইনএক্সপির তুলনায় তখন কিছু আলাদা করছে, নিশ্চিত কি না sure আমি এই সন্ধ্যায় বাড়িতে উইন 7-এ পরীক্ষা করতে সক্ষম হব, নইলে আমি আশঙ্কা করি আমি এই মুহুর্তে আটকা
পড়েছি

প্রকৃতপক্ষে, ব্যাচ কমান্ডের সাথে উপসর্গের চেষ্টা করুন startএবং দেখুন কী ঘটে। আদর্শ নয়, তবে আমি ভাবছি যদি এটি সাহায্য করতে পারে।
DMA57361

উত্তর:


42

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

নিম্নলিখিত কমান্ডটি ব্যবহার করে দেখুন, আপনি এটিকে এটির মধ্যে থেকে চালাতে পারেন cmd:

for /d /r . %d in (bin,obj) do @if exist "%d" rd /s/q "%d"

আপনার যদি অন্য ফোল্ডার পরিবর্তন করতে হয় (bin,obj)তবে কমান্ডের মাঝখানে সেটটিতে নতুন আইটেম যুক্ত করুন ।

এটি সতর্কতা ছাড়াই এবং পুনর্ব্যবহারযোগ্য বিন ব্যবহার না করে মিলে যাওয়া সমস্ত কিছু মুছে ফেলবে - সুতরাং, আপনি যদি কিছুটা অতিরিক্ত সুরক্ষা চান /qতবে কলটি rdশেষ থেকে ড্রপ করুন এবং প্রতিটি মোছার আগে সিস্টেমটি আপনাকে জিজ্ঞাসা করবে।

for /d /r . %d in (bin,obj) do @if exist "%d" rd /s "%d"

আপনি যদি কোনও ব্যাচ ফাইলের মধ্যে থেকে কমান্ডটি চালানোর উদ্দেশ্যে থাকেন , আপনি পরিবর্তনশীল প্রতিটি উদাহরণের প্রতিস্থাপন করার প্রয়োজন হবে %dসঙ্গে %%dতাই মত:

for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s/q "%%d"
OR
for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s "%%d"

রূপান্তর অনুযায়ী প্রশ্ন মন্তব্য ছিল

যদি কমান্ডটি কোনও ব্যাচ ফাইলে চালাতে রাজি না হয় (এখানে প্রতিলিপি দিতে অক্ষম), কমান্ডটি প্রিফিক্স করে চেষ্টা করুন start। যদিও এটি ব্যাচ ফাইলের সাথে একই সাথে চলমান প্রক্রিয়াটি শুরু করবে, যা অন্যান্য সমস্যার কারণ হতে পারে, এটি সঠিকভাবে কাজ করার সম্ভাবনা বেশি বলে মনে হয়।

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


1
আপনি কি জানেন যে আমি এই কমান্ডটি চালাচ্ছি সেখানে এই রুট ফোল্ডারের মধ্যে একটি ফোল্ডারকে কীভাবে উপেক্ষা করতে পারি?
গোরান ওব্রাডোভিক

নিখুঁতভাবে কাজ করেছেন! ধন্যবাদ! +1
khr055


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