কোনও ফোল্ডার এবং এর সাব ফোল্ডারগুলি থেকে সমস্ত ফাইল মুছুন


52

আমি একটি ফোল্ডার কাঠামো থেকে সমস্ত ফাইল সরাতে চাই, সুতরাং আমি একটি খালি ফোল্ডার কাঠামো রেখে এসেছি।

এটি কি ব্যাচ বা ভিবিএস স্ক্রিপ্ট স্ক্রিপ্টিংয়ে অর্জন করা যায় ?

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

আপনি কি পরামর্শ দিতে পারেন?


আপনি একটি পুনরাবৃত্তি মুছা মানে? এটি সত্যিই করা যেতে পারে। এরকম কিছু এর মধ্যে rd /s /q "c:\folder aথাকা সমস্ত ফাইল এবং ফোল্ডারগুলিতে একটি পুনরাবৃত্ত মোছার কাজ করবেFolder A
রামহাউন্ড

আমি করতে পারি, পাওয়ারশেলের মধ্যে কীভাবে স্ক্রিপ্ট করা যায় তা আমি জানি না তবে পূর্ববর্তী রান পাওয়ারশেল স্ক্রিপ্টগুলি রয়েছে।
ববজিম

2
শেখার এখন উপযুক্ত সময়, আমি উত্তরাধিকারের উদ্দেশ্যে ব্যাচ এবং vbs সিনট্যাক্স নিয়ে গবেষণা করব, তবে পিএস শেখার ক্ষেত্রে আরও বেশি সময় ব্যয় করব।
MDMoore313

আমি এখনও কোডটি পরীক্ষা করার সুযোগ পাইনি যদিও আমি নিশ্চিত যে এটি কাজ করবে। আমি ফিরে আসব এবং আমার প্রাথমিক ক্যোয়ারীর সর্বাধিক প্রশংসা উত্তর নির্বাচন করব।
ববজিম

আমি @ বিগহোমির সুপারিশটিকে দ্বিতীয় করব - আমি সবেমাত্র কিছু পাওয়ারশেল শিখেছি এবং আমাকে বলতে হবে এটি বেশ ঝরঝরে - খুব শক্ত নয়, কোনও কোডারের অস্ত্রাগারে একটি ভাল অস্ত্র। আমি এখন এটি প্রায়শই ঘন ঘন ব্যবহার করি।
বেন

উত্তর:


75

পাওয়ারশেল ব্যবহার করে এটি সম্পাদন করা যেতে পারে :

Get-ChildItem -Path C:\Temp -Include *.* -File -Recurse | foreach { $_.Delete()}

এই কমান্ডটি প্রতিটি শিশুকে আইটেমটি প্রবেশ করে $path, প্রতিটিটিতে মুছে ফেলা পদ্ধতিটি কার্যকর করে এবং বেশ দ্রুত। ফোল্ডারটির কাঠামো অক্ষত রয়েছে।

আপনার যদি কোনও এক্সটেনশন ছাড়াই ফাইল থাকতে পারে তবে ব্যবহার করুন

Get-ChildItem -Path C:\Temp -Include * -File -Recurse | foreach { $_.Delete()}

পরিবর্তে.

এটি -Fileপাওয়ারশেল v2 এর পরে প্যারামিটার যুক্ত হতে পারে বলে মনে হয় । যদি তাই হয়, তাহলে

Get-ChildItem -Path C:\Temp -Include *.* -Recurse | foreach { $_.Delete()}

এক্সটেনশন থাকা ফাইলগুলির কৌশলটি করা উচিত।

যদি এটি কাজ না করে তবে আপনার কাছে পাওয়ারশেলের একটি আধুনিক সংস্করণ রয়েছে কিনা তা পরীক্ষা করে দেখুন


1
এটা -Include *.*না -Include ., বড় পার্থক্য! :-)
MDMoore313

গেট-চাইল্ড আইটেম -পথ ডি: ty খালিটি এই ফোল্ডারটি অন্তর্ভুক্ত করুন -ফাইলে -প্রশ্ন | foreach {$ _। মোছা ()}
ববজিম

আপনি কেন ব্যবহার করছেন -Include .?? এটাই সমস্যা।
MDMoore313

2
তারা কি বাস্তবায়ন করতে পারে না powershell --version? তারা ইতিবাচক অঙ্ক সহ কোনও সংস্করণ নম্বর ব্যবহার করতে পারে না? এটা ঠিক পাগল। একটি প্রোগ্রামের সংস্করণ সংখ্যাটি কীভাবে সন্ধান করতে হবে এমন প্রশ্নের জন্য 1300 এরও বেশি আপগেট ?
থমাস ওয়েলার

1
পছন্দ করুন ওপির প্রশ্নটি ফোল্ডার কাঠামো সংরক্ষণের জন্য ছিল ।
MDMoore313

25

শর্ট এবং স্যুট পাওয়ারশেল। নিশ্চিত নয় যে এটি পিএসের সর্বনিম্ন সংস্করণটি কী নিয়ে কাজ করবে।

Remove-Item c:\Tmp\* -Recurse -Force

2
সুন্দর এবং সহজ. গ্রহণযোগ্য উত্তর না করলেও এই কৌশলটি করেছিল!
শয়তানীদারন

এটি গ্রহণযোগ্য উত্তর হওয়া উচিত, আপনি এমনকি টাইপ করতে পারেন rm *যেহেতু এটি জোর করা সত্যিই পরামর্শ দেওয়া হয় না (কনফার্মেশন ডায়ালগটিতে যাইহোক "হ্যাঁ থেকে সমস্ত" বিকল্প রয়েছে)।
জে গার্সিয়া

22

আপনি delআদেশ দিয়ে এটি করতে পারেন :

dir C:\folder
del /S *

/Sসুইচ যাও recursively শুধুমাত্র ফাইল মুছে যাবে।


2
এটি কি কেবল ফাইলগুলি মুছবে তবে ফোল্ডারগুলি ফেলে দেবে?
ববজিম

5
হ্যাঁ. আপনি /Pবিকল্পটি যুক্ত করতে পারেন যাতে এটি পরীক্ষা করে প্রতিটি মুছার বিষয়টি নিশ্চিত করতে বলে।
59-

অসুস্থ ধন্যবাদ এটি একবার দিন! আশা করি অনেক সময় সাশ্রয় হবে!
ববজিম 13

3
হ্যাঁ. এবং লুকানো এবং সিস্টেম ফাইলগুলি মুছে ফেলার জন্য, মোছার attrib -s -r -h Folder\*.* /s /dআগে করুন। এবং অনুমতি জন্য takeownকমান্ড ব্যবহার করুন ।
জেট

2
এবং ওয়াইল্ডকার্ড ব্যবহার করার সময় আপনি নিশ্চিতকরণের জন্য জিজ্ঞাসা না করার জন্য / কিউ ব্যবহার করতে পারেন ।
আয়লাতান

4

আপনার মূল প্রশ্নের লাইনগুলির মধ্যে পড়ার জন্য আপনি ব্যবহার করতে পারেন এমন একটি বিকল্প ব্যাচ কোড লাইন অফার করতে পারি। দৌড়ানোর সময় এটি কী করবে কেবল days০ দিনের বেশি পুরানো ফাইলগুলি মুছবে। এইভাবে আপনি এটি একটি নির্ধারিত টাস্কে রাখতে পারেন এবং এটি যখন চালায় তখন পুরো ডিরেক্টরিটি ফুটিয়ে তোলার পরিবর্তে আপনার প্রয়োজন হয় না এমন অতিরিক্ত ফাইল মুছে ফেলা হয়। আপনি চাইলে 60 থেকে 5 দিন বা 1 দিন এমনকি পরিবর্তন করতে পারেন। এটি ফোল্ডারগুলি মুছে না।

forfiles -p "c:\path\to\files" -d -60 -c "cmd /c del /f /q @path"

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

শিরোনামটিতে "একটি ফোল্ডার এবং এর উপ ফোল্ডারগুলি থেকে সমস্ত ফাইল মুছুন" এমনটি পড়েছে যাতে এটি কোনও সমাধান নয়।
অ্যান্ডারস লিন্ডন


3

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

উদাহরণ সহ: http://dotnet-helpers.com/powershell-demo/how-to-delete-a-folder-or-file- using-powershell/

কোনও ফাইল মোছার জন্য পাওয়ারশেল কমনড ব্যবহার করা

সরান-আইটেম -পথ "সি: ot ডটনেট-সহায়কগুলি um ডমিফিলিটোডিলেট.টেক্সট"

উপরের কমান্ডটি "সি: ile ডটনেট-হেল্পার্স" অবস্থানের ভিতরে উপস্থিত "ডামিফিলিটো ডিলিট.টেক্সট" ফাইলটি কার্যকর এবং মুছে ফেলবে।

সমস্ত ফাইল মুছে ফেলার জন্য পাওয়ারশেল কম্যান্ডড ব্যবহার করে

আইটেম -পথ সরান "সি: ot ডটনেট-সহায়কসমূহ *। *"

সমস্ত ফাইল এবং ফোল্ডারগুলি মোছার জন্য পাওয়ারশেল কম্যান্ডড ব্যবহার করে

সরান-আইটেম -পথ "সি: ot ডটনেট-সহায়ক"

-recurseনিচে ড্রিল করে এবং আরও অনেকগুলি ফাইল সন্ধান করে। –recurseপরামিতি PowerShell অনুমতি জন্য জিজ্ঞাসা ছাড়াই যেকোনো শিশু আইটেমগুলি সরানোর অনুমতি দেবে। অতিরিক্তভাবে, লুকানো বা কেবল পঠনযোগ্য ফাইল মুছতে ফোর্স প্যারামিটার যুক্ত করা যেতে পারে।

জোর করে ফাইল মুছে ফেলার জন্য -ফর্স কমান্ড ব্যবহার করে

শক্তিশালীভাবে সমস্ত ফাইল মুছতে পাওয়ারশেল কমান্ড ব্যবহার করা হচ্ছে

সরান-আইটেম -পথ "সি: ot ডটনেট-সহায়কসমূহ।। *" -ফরাস


1

পাওয়ারশেল ব্যবহার করে এটি ব্যবহার করে দেখুন। এই উদাহরণে আমি সমস্ত .class ফাইলগুলি মুছতে চাই:

Get-ChildItem '.\FOLDERNAME' -include *.class -recurse | foreach ($_) {remove-item $_.FullName}

1
  1. উইন্ডোজ এক্সপ্লোরারে সমস্ত ফাইল এবং ফোল্ডার যুক্ত রুট ডির নির্বাচন করুন।

  2. সন্ধান করা *

  3. প্রকার অনুসারে বাছাই করুন (সমস্ত ফোল্ডার শীর্ষে থাকবে এবং নীচে তালিকাভুক্ত সমস্ত ফাইল থাকবে)

  4. সমস্ত ফাইল নির্বাচন করুন এবং মুছুন টিপুন।

এটি সমস্ত ফাইল মুছবে এবং ডিরেক্টরি কাঠামো সংরক্ষণ করবে।


1

বর্তমান ডিরেক্টরি এবং উপ ডিরেক্টরি থেকে সমস্ত ফাইল মুছুন তবে ফোল্ডারগুলির কাঠামো রেখে।

( /Q) স্যুইচ হ'ল ব্যবহারকারীর জিজ্ঞাসা করার জন্য তিনি মুছে ফেলতে ঠিক আছেন কিনা

সতর্কতা : /Qআপনি মূল্যবান কিছু মুছে ফেলছেন না তা নিশ্চিত করে চেষ্টা করে দেখুন ।

del /S * /Q 

1

এটিই সহজতম উপায় আইএমও

পাওয়ারশেল খুলুন, ডিরেক্টরিতে নেভিগেট করুন ( cd), তারপরে

ls -Recurse * | rm

(ছন্দ) সব শেষ ...

আপনি যদি কোনও নির্দিষ্ট এক্সটেনশনের ভিত্তিতে মুছতে চান

ls -Recurse *.docx | rm

ls ডিরেক্টরি তালিকাভুক্ত করা হয়

-Recurse কোনও পতাকা যা পাওয়ারশেলকে কোনও সাব ডিরেক্টরিতে যেতে বলে

* সব বলে

*.doc .ডোক এক্সটেনশন সহ সবকিছু

| বাম থেকে ডানদিকে আউটপুট খাওয়ান

rm মুছে ফেলা

অন্যান্য সমস্ত উত্তর এটি প্রয়োজনের চেয়ে আরও বিভ্রান্তিকর বলে মনে হয়।


0
dir C:\testx\ -Recurse -File | rd -WhatIf
What if: Performing the operation "Remove File" on target "C:\testx\x.txt".
What if: Performing the operation "Remove File" on target "C:\testx\bla\x.txt".

-1

উপরের উত্তরের পরিপূরক হিসাবে, আসলে উপরের উত্তরগুলিতে গেট-চাইল্ডাইটেম ব্যবহার এবং ফলাফলটি পাইপলাইনে পাস করার দরকার নেই, কারণ -সিলক-শব্দটি সরান-আইটেম কমান্ডের অন্তর্ভুক্ত করা হয়েছে

একটি সহজভাবে:

সরান-আইটেম-অন্তর্ভুক্ত করুন " " "সি: \ টেম্পে" -পরীক্ষা

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