使用PowerShell,是否可以删除包含文件的目录而不提示确认操作?
当前回答
下面是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
}
}
其他回答
下面是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
}
}
有些多级目录文件夹需要删除两次,这困扰了我很久。这是我的最终代码,它为我工作,并清理得很好,希望它有帮助。
function ForceDelete {
[CmdletBinding()]
param(
[string] $path
)
rm -r -fo $path
if (Test-Path -Path $path){
Start-Sleep -Seconds 1
Write-Host "Force delete retrying..." -ForegroundColor white -BackgroundColor red
rm -r -fo $path
}
}
ForceDelete('.\your-folder-name')
ForceDelete('.\your-file-name.php')
这招对我很管用:
Remove-Item C:\folder_name -Force -Recurse
2018年更新
在当前版本的PowerShell中(在Windows 10和Windows 11上使用v5.1进行测试,在2023年),可以使用更简单的Unix语法rm -R .\DirName无声地删除目录.\DirName及其可能包含的所有子目录和文件。事实上,许多常见的Unix命令在PowerShell中的工作方式与在Linux命令行中相同。
也可以使用rm -R .\DirName\* (Jeff在评论中提到了)清理文件夹,但不能清理文件夹本身。
从PowerShell删除强制答案: help Remove-Item说:
这个cmdlet中的递归参数不能正常工作
要解决的命令是
Get-ChildItem -Path $Destination -Recurse | Remove-Item -force -recurse
然后删除文件夹本身
Remove-Item $Destination -Force
推荐文章
- 在Python中提取文件路径(目录)的一部分
- Crontab -在目录中运行
- PowerShell中用户输入的提示符
- 如何从字符串执行任意本机命令?
- 如何可靠地打开与当前运行脚本在同一目录下的文件
- 如何使用。net 4运行时运行PowerShell ?
- 如何使用Bash创建一个文件夹,如果它还不存在?
- 在PowerShell中重新加载路径
- 函数在PowerShell中的返回值
- 如何在PowerShell中输出一些东西
- 如何从查找“类型d”中排除此/ current / dot文件夹
- 调用webrequest, POST参数
- 如何拉特定的目录与git
- 无法加载.ps1,因为在此系统上禁止执行脚本
- 如何获得正在执行的cmdlet的当前目录