Câu trả lời:
Remove-Item -LiteralPath "foldertodelete" -Force -Recurse
-ErrorAction Ignore
, mặc dù điều đó cũng sẽ ẩn các lỗi khác.
Remove-Item './folder/*'
. Nếu bạn thực sự muốn xóa chỉ các tệp của tất cả các thư mục, bạn có thể liệt kê tất cả các lá và chuyển nó vào lệnh ghép ngắn Loại bỏGet-ChildItem -Recurse -File | Remove-Item
Từ PowerShell loại bỏ câu trả lời bắt buộc : help Remove-Item nói:
Tham số Recurse trong lệnh ghép ngắn này không hoạt động đúng
Lệnh để giải quyết là
Get-ChildItem -Path $Destination -Recurse | Remove-Item -force -recurse
Và sau đó xóa thư mục chính nó
Remove-Item $Destination -Force
Remove-Item -Recurse -Force $dir
và nó hoạt động.
Get-Help Remove-Item
tài liệu mở rộng thu được sau khi Update-Help
chạy ...
Cập nhật 2018
Trong phiên bản hiện tại của PowerShell (đã được thử nghiệm với v5.1 trên Windows 10 1809), người ta có thể sử dụng cú pháp Unix đơn giản hơn rm -R .\DirName
để âm thầm xóa thư mục .\DirName
với tất cả các thư mục con và tệp mà nó có thể chứa. Trong thực tế, nhiều lệnh Unix phổ biến hoạt động theo cùng một cách trong PowerShell như trong một dòng lệnh Linux.
rm -R .\DirName\*
để dọn dẹp thư mục mà không cần xóa chính thư mục
Để xóa nội dung mà không có thư mục, bạn có thể sử dụng như sau:
Remove-Item "foldertodelete\*" -Force -Recurse
rm -Force -Recurse -Confirm:$false $directory2Delete
đã không hoạt động trong PowerShell ISE , nhưng nó hoạt động thông qua PowerShell CLI thông thường.
Tôi hi vọng cái này giúp được. Nó đang lái tôi bannana.
PowerShell CLI
và không trong khi phát triển PowerShell ISE
.
Nói tóm lại, chúng ta có thể sử dụng rm -r -fo {folderName}
để loại bỏ thư mục một cách đệ quy (loại bỏ tất cả các tệp và thư mục bên trong) và buộc
Dưới đây là bản triển khai có thể sao chép câu trả lời của 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
}
}
Vì thư mục của tôi nằm trong C: \ users, tôi phải chạy quyền hạn của mình với tư cách quản trị viên,
del ./[your Folder name] -Force -Recurse
lệnh này đã làm việc cho tôi.
del
là một bí danh cho 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
}
Nếu bạn có thư mục của mình làm đối tượng, giả sử bạn đã tạo thư mục đó trong cùng một tập lệnh bằng lệnh tiếp theo:
$folder = New-Item -ItemType Directory -Force -Path "c:\tmp" -Name "myFolder"
Sau đó, bạn có thể loại bỏ nó như thế này trong cùng một kịch bản
$folder.Delete($true)
$ true - trạng thái để loại bỏ đệ quy
$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
}