चुपचाप कैसे PowerShell में सामग्री के साथ एक निर्देशिका को हटा दें


231

PowerShell का उपयोग करना, क्या कुछ निर्देशिका को हटाना संभव है, जिसमें कार्रवाई की पुष्टि करने के लिए बिना फ़ाइलों को शामिल किया गया है?


जवाबों:


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

16
मैंने पाया है कि जब मुझे उपनिर्देशिका वाली निर्देशिका पर चलाया जाता है तो मुझे इसे दो बार चलाने की आवश्यकता होती है। पहली बार, "निर्देशिका खाली नहीं है" त्रुटियों का एक बहुत कुछ होगा। दूसरी बार, यह बिना किसी त्रुटि के पूरा होता है।
क्रिस्टोफर जॉनसन

1
अगर मैं फ़ोल्डर की केवल सामग्री हटाना चाहता हूं, लेकिन फ़ोल्डर हटाना नहीं?
किकेनेट

2
@ Kiquenet- यह मेरे लिए काम करता है, अगर मैं रास्ते में एक अनुगामी स्लैश जोड़ता हूं, तो यह उदाहरण Remove-Item। \ Foldertodelete * -Force -Recurse
Adrian Carr

3
यदि आप चाहते हैं कि आप एक लापता फ़ोल्डर को अनदेखा कर सकें -ErrorAction Ignore, तो वह अन्य त्रुटियों को भी छिपाएगा।
टोर क्लिंगबर्ग

2
@Kiquenet तब आप उस फ़ोल्डर के भीतर सब कुछ निकालने के लिए वाइल्डकार्ड का उपयोग कर सकते हैं Remove-Item './folder/*':। यदि आप वास्तव में सभी फ़ोल्डरों की केवल फ़ाइलों को खाली करना चाहते हैं, तो आप सभी लीफ़्स को सूचीबद्ध कर सकते हैं और इसे निकालें-आइटम cmdlet पर पाइप कर सकते हैंGet-ChildItem -Recurse -File | Remove-Item
माइकल कर्गल

62

से PowerShell निकालें बल जवाब : मदद निकालें-मद का कहना है:

इस cmdlet में Recurse पैरामीटर ठीक से काम नहीं करता है

वर्कअराउंड करने का कमांड है

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

और फिर फ़ोल्डर को ही हटा दें

Remove-Item $Destination -Force 

1
अगर मैं फ़ोल्डर की केवल सामग्री हटाना चाहता हूं, लेकिन फ़ोल्डर हटाना नहीं?
किकेनेट

3
@ beppe9000: मेरा मानना ​​है, हाँ। हालिया स्क्रिप्ट में मैं उपयोग कर रहा हूं Remove-Item -Recurse -Force $dirऔर यह काम करता है।
माइकल फ्रीजिम 10

ठीक है, लेकिन मैंने अभी पढ़ा है कि समस्या अभी भी यहाँ है विंडोज़ पर 10 विस्तारित Get-Help Remove-Itemप्रलेखन के बाद प्राप्त किया Update-Helpजाता है ...
beppe9000

2
Get-ChildItem में -Force तर्क भी होना चाहिए, ताकि यह छिपी हुई फ़ाइलों / फ़ोल्डरों को भी लौटाए।
व्लाद इलिसकु

@MichaelFreidgeim - मैंने इसका उपयोग किया है और इसने आंतरायिक विफलताओं को कम किया है, लेकिन वे अभी भी कभी-कभी होते हैं। यदि उच्च-स्तरीय निर्देशिका के लिए Remove-Item -recurse समस्याग्रस्त है, तो क्या आप बता सकते हैं कि जब इसे वर्कअराउंड लाइन के साथ पाइप किया जाता है तो यह समान रूप से समस्याग्रस्त क्यों नहीं होगा? Get-ChildItem -recurse बच्चों को नीचे-क्रम में वापस नहीं करता है। क्या निकालें-आइटम अपने पाइपलाइन किए गए इनपुट का आदेश देता है?
aggieNick02

42

यह मेरे लिए काम किया:

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

इस प्रकार फ़ोल्डर को सभी फ़ाइलों के साथ हटा दिया जाता है और यदि फ़ोल्डर पथ मौजूद नहीं है, तो यह त्रुटि उत्पन्न नहीं कर रहा है।


यह फ़ोल्डर को नहीं हटाता है।
चर

13

2018 अपडेट

PowerShell के वर्तमान संस्करण में (विंडोज 10 1809 पर v5.1 के साथ परीक्षण किया गया है) सभी उपनिर्देशिकाओं और फाइलों rm -R .\DirNameमें मौजूद निर्देशिका को चुपचाप हटाने के लिए सरल यूनिक्स सिंटैक्स का उपयोग कर .\DirNameसकते हैं। वास्तव में कई सामान्य यूनिक्स कमांड एक ही तरह से PowerShell में लिनक्स कमांड लाइन की तरह काम करते हैं।


आप rm -R .\DirName\*स्वयं फ़ोल्डर को हटाने के बिना फ़ोल्डर को साफ करने के लिए भी उपयोग कर सकते हैं
जेफ चेन

शक्तियां आदेशों में से कोई भी नहीं है और न ही यह मेरे लिए 2016 सर्वर कोर कंप्यूटर पर काम करता है। वे सभी कहते हैं, 'हटाया नहीं जा सकता क्योंकि यह खाली नहीं है'। मैंने विंडोज़ में rd कमांड को भी आज़माया। मैं फ़ोल्डर को कहीं भी स्थानांतरित कर सकता हूं, बस हटा नहीं सकता।
हेलजेट

10

एक फ़ोल्डर के बिना सामग्री को हटाने के लिए आप निम्नलिखित का उपयोग कर सकते हैं:

Remove-Item "foldertodelete\*" -Force -Recurse

6

rm -Force -Recurse -Confirm:$false $directory2DeletePowerShell ISE में काम नहीं किया , लेकिन यह नियमित PowerShell CLI के माध्यम से काम करता है।

आशा है कि ये आपकी मदद करेगा। यह मुझे बैननेस चला रहा था।


धन्यवाद, वही मेरे लिए जाता है! 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

चूँकि मेरी निर्देशिका C: \ users में थी, इसलिए मुझे अपनी शक्तियाँ प्रशासक के रूप में चलानी पड़ीं,

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 अलग-अलग उत्तरों को जोड़ने की योजना नहीं बना रहे हैं, तो शायद आप उनमें से एक को हटाना चाहते हैं?
बुम्मी

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.