使用PowerShell,是否可以删除包含文件的目录而不提示确认操作?
Remove-Item -LiteralPath "foldertodelete" -Force -Recurse
或者,用更短的版本
rm /path -r -force
从PowerShell删除强制答案: help Remove-Item说:
这个cmdlet中的递归参数不能正常工作
要解决的命令是
Get-ChildItem -Path $Destination -Recurse | Remove-Item -force -recurse
然后删除文件夹本身
Remove-Item $Destination -Force
rm -Force -Recurse -Confirm:$false $directory2Delete在PowerShell ISE中不起作用,但在常规的PowerShell CLI中起作用。
我希望这能有所帮助。它快把我逼疯了。
这招对我很管用:
Remove-Item $folderPath -Force -Recurse -ErrorAction SilentlyContinue
因此,如果文件夹路径不存在,文件夹中的所有文件都将被删除,并且不会产生错误。
下面是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
}
}
$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
}
$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
}
2018年更新
在当前版本的PowerShell中(在Windows 10和Windows 11上使用v5.1进行测试,在2023年),可以使用更简单的Unix语法rm -R .\DirName无声地删除目录.\DirName及其可能包含的所有子目录和文件。事实上,许多常见的Unix命令在PowerShell中的工作方式与在Linux命令行中相同。
也可以使用rm -R .\DirName\* (Jeff在评论中提到了)清理文件夹,但不能清理文件夹本身。
由于我的目录在C:\users中,我必须以管理员身份运行powershell,
del ./[your Folder name] -Force -Recurse
这个命令对我很管用。
如果你有你的文件夹作为一个对象,让我们说你在相同的脚本中使用下一个命令创建它:
$folder = New-Item -ItemType Directory -Force -Path "c:\tmp" -Name "myFolder"
然后你可以像这样在相同的脚本中删除它
$folder.Delete($true)
$true -递归删除的状态
如果你想把一个固定路径的变量和一个字符串作为动态路径连接到一个完整的路径来删除文件夹,你可能需要下面的命令:
$fixPath = "C:\Users\myUserName\Desktop"
Remove-Item ("$fixPath" + "\Folder\SubFolder") -Recurse
在变量$newPath中,连接路径现在是:"C:\Users\myUserName\Desktop\Folder\SubFolder"
因此,您可以从起点(“C:\Users\myUserName\Desktop”)删除几个目录,该起点已经在变量$fixPath中定义和固定。
$fixPath = "C:\Users\myUserName\Desktop"
Remove-Item ("$fixPath" + "\Folder\SubFolder") -Recurse
Remove-Item ("$fixPath" + "\Folder\SubFolder1") -Recurse
Remove-Item ("$fixPath" + "\Folder\SubFolder2") -Recurse
Powershell使用相对文件夹。Remove-Item有几个与unix一致的有用别名。一些例子:
rm -R -Force ./directory
del -R -Force ./directory/*
有些多级目录文件夹需要删除两次,这困扰了我很久。这是我的最终代码,它为我工作,并清理得很好,希望它有帮助。
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')
推荐文章
- 在Python中提取文件路径(目录)的一部分
- Crontab -在目录中运行
- PowerShell中用户输入的提示符
- 如何从字符串执行任意本机命令?
- 如何可靠地打开与当前运行脚本在同一目录下的文件
- 如何使用。net 4运行时运行PowerShell ?
- 如何使用Bash创建一个文件夹,如果它还不存在?
- 在PowerShell中重新加载路径
- 函数在PowerShell中的返回值
- 如何在PowerShell中输出一些东西
- 如何从查找“类型d”中排除此/ current / dot文件夹
- 调用webrequest, POST参数
- 如何拉特定的目录与git
- 无法加载.ps1,因为在此系统上禁止执行脚本
- 如何获得正在执行的cmdlet的当前目录