পাওয়ারশেলের সামগ্রীর সাথে কীভাবে চুপচাপ একটি ডিরেক্টরি মুছবেন


231

পাওয়ারশেল ব্যবহার করে, ক্রিয়াকলাপের নিশ্চয়তা না দিয়ে এমন কিছু ডিরেক্টরি মুছে ফেলা সম্ভব?


উত্তর:


340
Remove-Item -LiteralPath "foldertodelete" -Force -Recurse

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

1
আমি যদি কেবল ফোল্ডারের সামগ্রীগুলি মুছতে চাই তবে ফোল্ডারটি মুছতে না পারি?
কিকিনেট

2
@ কুইকিনেট- এটি আমার পক্ষে কাজ করে, যদি আমি পথে একটি পিছনে স্ল্যাশ যোগ করি, তবে এই উদাহরণটি সরান-আইটেম হয়ে যায় \ ফোল্ডারডোডিলিট * -ফর্স-রেকর্ড
অ্যাড্রিয়ান ক্যার

3
যদি আপনি এটি কোনও অনুপস্থিত ফোল্ডারটিকে অগ্রাহ্য করতে চান তবে আপনি যুক্ত করতে পারেন -ErrorAction Ignore, যদিও এটি অন্যান্য ত্রুটিগুলিও আড়াল করবে।
টোর ক্লিংবার্গ

2
@Kiquenet তারপর আপনি যে ফোল্ডার মধ্যে সবকিছু মুছে ফেলার জন্য ওয়াইল্ডকার্ড ব্যবহার করতে পারেন: Remove-Item './folder/*'। আপনি যদি সত্যিই সমস্ত ফোল্ডারের কেবল ফাইলগুলি সাফ করতে চান তবে আপনি সমস্ত পাতা তালিকাভুক্ত করতে পারেন এবং এটিকে সরান-আইটেমের সেমিডলেটে পাইপ করতে পারেনGet-ChildItem -Recurse -File | Remove-Item
মাইকেল কার্গল

62

থেকে PowerShell অপসারণ বল উত্তর : সাহায্য সরান আইটেম বলেছেন:

এই সেমিডলেটে রিকার্স প্যারামিটারটি সঠিকভাবে কাজ করে না

কাজটি করতে আদেশটি হ'ল

Get-ChildItem -Path $Destination -Recurse | Remove-Item -force -recurse

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

Remove-Item $Destination -Force 

1
আমি যদি কেবল ফোল্ডারের সামগ্রীগুলি মুছতে চাই তবে ফোল্ডারটি মুছতে না পারি?
কিকিনেট

3
@ beppe9000: আমি বিশ্বাস করি, হ্যাঁ। সাম্প্রতিক স্ক্রিপ্টগুলিতে আমি ব্যবহার করছি Remove-Item -Recurse -Force $dirএবং এটি কার্যকর হয়।
মাইকেল ফ্রেইজিম

ঠিক আছে, তবে আমি কেবল পড়লাম যে সমস্যাটি Get-Help Remove-ItemUpdate-Help
উইন্ডোজটিতে

2
গেট-চাইল্ড আইটেমটিতেও-ফোরস যুক্তি থাকা উচিত, যাতে এটি লুকানো ফাইল / ফোল্ডারগুলিও দেয়।
ভ্লাদ ইলেসিকি

@ মিশেলফ্রিজেম - আমি এটি ব্যবহার করেছি এবং এটি মাঝে মাঝে ব্যর্থতা হ্রাস পেয়েছে, তবে এখনও মাঝে মধ্যে ঘটে যায় happen যদি সরান-আইটেম-রেকর্ডটি শীর্ষ-স্তরের ডিরেক্টরিতে সমস্যাযুক্ত হয় তবে আপনি কী ব্যাখ্যা করতে পারবেন যে এটি যখন কাজের লাইনের সাথে পাইপ করা হয় তখন কেন এটি একইভাবে সমস্যাযুক্ত হবে না? গেট-চাইল্ড আইটেম-রেকর্ডটি নীচের অংশে বাচ্চাদের ফিরিয়ে দেয় না। সরান-আইটেম তার পাইপলাইন ইনপুট অর্ডার করে?
aggieNick02

42

এটি আমার পক্ষে কাজ করেছে:

Remove-Item $folderPath -Force  -Recurse -ErrorAction SilentlyContinue

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


এটি ফোল্ডারটি মুছে না।
পরিবর্তনশীল

13

2018 আপডেট

পাওয়ারশেলের বর্তমান সংস্করণে (উইন্ডোজ 10 1809-এ v5.1 দিয়ে পরীক্ষা করা হয়েছে) যে কোনও সাব-ডাইরেক্টরি এবং এতে থাকা ফাইল সহ rm -R .\DirNameডিরেক্টরিটি নিঃশব্দে মুছতে সহজ ইউনিক্স বাক্য গঠন ব্যবহার করতে পারেন .\DirName। আসলে অনেকগুলি সাধারণ ইউনিক্স কমান্ড লিনাক্স কমান্ড লাইনের মতো পাওয়ারশেলের ক্ষেত্রে একইভাবে কাজ করে।


আপনি rm -R .\DirName\*নিজে ফোল্ডারটি মোছা না করে ফোল্ডারটি পরিষ্কার করতেও ব্যবহার করতে পারেন
জেফ চেন

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


6

rm -Force -Recurse -Confirm:$false $directory2Deleteপাওয়ারশেল আইএসই তে কাজ করেনি , তবে এটি নিয়মিত পাওয়ারশেল সিএলআইয়ের মাধ্যমে কাজ করে।

আশা করি এটা কাজে লাগবে. এটা আমার বান্না চালাচ্ছিল।


আপনাকে ধন্যবাদ, আমার জন্য একই যায়! সাধারণত এই ফোল্ডারটি বিকাশকালে PowerShell CLIএবং না থেকে কল করার সময় মুছে ফেলা হয়েছিল PowerShell ISE
ব্রুনো বিয়েরি

3

সংক্ষেপে, আমরা rm -r -fo {folderName}ফোল্ডারটি পুনরাবৃত্তভাবে মুছে ফেলতে (সমস্ত ফাইল এবং ফোল্ডার ভিতরে ভিতরে সরিয়ে) এবং জোর করে ব্যবহার করতে পারি


2

নীচে মাইকেল ফ্রেইজিমের উত্তরের একটি অনুলিপি-কার্যকরযোগ্য প্রয়োগ রয়েছে

function Delete-FolderAndContents {
    # http://stackoverflow.com/a/9012108

    param(
        [Parameter(Mandatory=$true, Position=1)] [string] $folder_path
    )

    process {
        $child_items = ([array] (Get-ChildItem -Path $folder_path -Recurse -Force))
        if ($child_items) {
            $null = $child_items | Remove-Item -Force -Recurse
        }
        $null = Remove-Item $folder_path -Force
    }
}

1

যেহেতু আমার ডিরেক্টরি সিতে ছিল: \ ব্যবহারকারীদের আমাকে প্রশাসক হিসাবে আমার পাওয়ারশেলটি চালাতে হয়েছিল,

del ./[your Folder name] -Force -Recurse

এই আদেশ আমার জন্য কাজ করে।


2
যেমন পার্শ্ব-নোট: delএটির জন্য একটি উপাধি Remove-Item
মাইকেল কার্গল

0
$LogPath = "E:\" # Your local of directories
$Folders = Get-Childitem $LogPath -dir -r | Where-Object {$_.name -like "*temp*"}
foreach ($Folder in $Folders) 
{
    $Item =  $Folder.FullName
    Write-Output $Item
    Remove-Item $Item -Force -Recurse
}

উপরের স্ক্রিপ্টে আমি ফোল্ডারের পুরো নামটি মুদ্রণ করি এবং এটি সরিয়ে ফেলি। \ o /
অ্যান্ডারসন ব্রাজ

0

যদি আপনার ফোল্ডারটি কোনও অবজেক্ট হিসাবে থাকে, তবে আসুন আমরা আপনাকে পরবর্তী কমান্ডটি ব্যবহার করে একই স্ক্রিপ্টে এটি তৈরি করে বলতে পারি:

$folder = New-Item -ItemType Directory -Force -Path "c:\tmp" -Name "myFolder"

তারপরে আপনি একই স্ক্রিপ্টে এটি কেবল এটি সরাতে পারেন

$folder.Delete($true)

সত্য - পুনরাবৃত্ত অপসারণের জন্য রাজ্যগুলি


0
$LogPath = "E:\" # Your local of directories
$Folders = Get-Childitem $LogPath -dir -r | Where-Object {$_.name -like "*grav*"} # Your keyword name directories

foreach ($Folder in $Folders) 
{
    $Item =  $Folder.FullName
    Write-Output $Item
    Remove-Item $Item -Force -Recurse -ErrorAction SilentlyContinue
}

উপরের স্ক্রিপ্টে আমি ফোল্ডারের পুরো নামটি মুদ্রণ করি এবং এটি সরিয়ে ফেলি। একটি ভাল কাজ ...
অ্যান্ডারসন ব্রাজ

1
হাই অ্যান্ডারসন, আপনি যদি 2 টি পৃথক উত্তর যুক্ত করার পরিকল্পনা না করেন তবে আপনার উত্তরগুলি সম্পাদনা করা উচিত, সম্ভবত আপনি তাদের একটি মুছতে চান?
বুনমি

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