การใช้ PowerShell เป็นไปได้ไหมที่จะลบบางไดเรกทอรีที่มีไฟล์โดยไม่ต้องแจ้งให้ทำการยืนยัน?
การใช้ PowerShell เป็นไปได้ไหมที่จะลบบางไดเรกทอรีที่มีไฟล์โดยไม่ต้องแจ้งให้ทำการยืนยัน?
คำตอบ:
Remove-Item -LiteralPath "foldertodelete" -Force -Recurse
-ErrorAction Ignore
ได้แม้ว่านั่นจะเป็นการซ่อนข้อผิดพลาดอื่น ๆ
Remove-Item './folder/*'
แล้วคุณสามารถใช้สัญลักษณ์ในการลบทุกอย่างที่อยู่ในโฟลเดอร์ที่: หากคุณต้องการล้างเฉพาะไฟล์ของโฟลเดอร์ทั้งหมดคุณสามารถแสดงรายการ leafs ทั้งหมดและไปป์ที่รายการ Remove-Item cmdletGet-ChildItem -Recurse -File | Remove-Item
จากPowerShell ลบคำตอบบังคับ : ช่วย Remove-Item พูดว่า:
พารามิเตอร์ Recurse ใน cmdlet นี้ทำงานไม่ถูกต้อง
คำสั่งในการแก้ปัญหาคือ
Get-ChildItem -Path $Destination -Recurse | Remove-Item -force -recurse
แล้วลบโฟลเดอร์เอง
Remove-Item $Destination -Force
Remove-Item -Recurse -Force $dir
และใช้งานได้
Get-Help Remove-Item
เอกสารประกอบแบบขยาย windows 10 ที่ได้รับหลังจากUpdate-Help
เรียกใช้ ...
สิ่งนี้ใช้ได้กับฉัน:
Remove-Item $folderPath -Force -Recurse -ErrorAction SilentlyContinue
ดังนั้นโฟลเดอร์จะถูกลบด้วยไฟล์ทั้งหมดที่อยู่ในนั้นและจะไม่เกิดข้อผิดพลาดหากไม่มีเส้นทางของโฟลเดอร์
อัพเดต 2018
ในรุ่นปัจจุบันของ PowerShell (ทดสอบกับ v5.1 บน Windows 10 1809) ผู้ใช้หนึ่งสามารถใช้ไวยากรณ์ Unix ที่ง่ายกว่าrm -R .\DirName
เพื่อลบไดเรกทอรี.\DirName
ด้วยไดเรกทอรีย่อยและไฟล์ทั้งหมดที่อยู่ในนั้น ในความเป็นจริงคำสั่ง Unix ทั่วไปทำงานในแบบเดียวกันกับ PowerShell เหมือนกับในบรรทัดคำสั่ง Linux
rm -R .\DirName\*
ทำความสะอาดโฟลเดอร์โดยไม่ต้องลบโฟลเดอร์เอง
หากต้องการลบเนื้อหาที่ไม่มีโฟลเดอร์คุณสามารถใช้สิ่งต่อไปนี้:
Remove-Item "foldertodelete\*" -Force -Recurse
rm -Force -Recurse -Confirm:$false $directory2Delete
ไม่ทำงานในPowerShell ISEแต่ทำงานผ่าน PowerShell CLI ปกติ
ฉันหวังว่านี่จะช่วยได้. มันเป็นแรงขับดันฉัน bannanas
PowerShell CLI
PowerShell ISE
ในระยะสั้นเราสามารถใช้rm -r -fo {folderName}
เพื่อลบโฟลเดอร์ซ้ำ (ลบไฟล์และโฟลเดอร์ทั้งหมดภายใน) และบังคับ
ด้านล่างนี้เป็นการนำคำตอบของ Michael Freidgeim ไปใช้ในการคัดลอกได้
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
}
}
เนื่องจากไดเรกทอรีของฉันอยู่ใน C: \ users ฉันต้องเรียกใช้ powershell ในฐานะผู้ดูแลระบบ
del ./[your Folder name] -Force -Recurse
คำสั่งนี้ใช้ได้สำหรับฉัน
del
Remove-Item
$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
}
หากคุณมีโฟลเดอร์เป็นวัตถุสมมติว่าคุณสร้างมันในสคริปต์เดียวกันโดยใช้คำสั่งถัดไป:
$folder = New-Item -ItemType Directory -Force -Path "c:\tmp" -Name "myFolder"
จากนั้นคุณสามารถลบแบบนี้ในสคริปต์เดียวกัน
$folder.Delete($true)
$ true - สถานะสำหรับการลบแบบเรียกซ้ำ
$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
}
สิ่งนี้ใช้ได้กับฉัน:
Remove-Item C:\folder_name -Force -Recurse