使用PowerShell,是否可以删除包含文件的目录而不提示确认操作?
Remove-Item -LiteralPath "foldertodelete" -Force -Recurse
或者,用更短的版本
rm /path -r -force
这个cmdlet中的递归参数不能正常工作
要解决的命令是
Get-ChildItem -Path $Destination -Recurse | Remove-Item -force -recurse
然后删除文件夹本身
Remove-Item $Destination -Force
要删除没有文件夹的内容,您可以使用以下方法:
Remove-Item "foldertodelete\*" -Force -Recurse
rm -Force -Recurse -Confirm:$false $directory2Delete不能在PowerShell伊势中工作,但它可以通过常规的PowerShell CLI工作。
rm -Force -Recurse -Confirm:$false $directory2Delete
我希望这能有所帮助。它快把我逼疯了。
这招对我很管用:
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 1809上用v5.1测试)中,可以使用更简单的Unix语法rm -R .\DirName无声地删除目录.\DirName及其可能包含的所有子目录和文件。事实上,许多常见的Unix命令在PowerShell中的工作方式与在Linux命令行中相同。
rm -R .\DirName
.\DirName
也可以使用rm -R .\DirName\* (Jeff在评论中指出)清理文件夹,但不能清理文件夹本身。
rm -R .\DirName\*
由于我的目录在C:\users中,我必须以管理员身份运行powershell,
del ./[your Folder name] -Force -Recurse
这个命令对我很管用。
如果你有你的文件夹作为一个对象,让我们说你在相同的脚本中使用下一个命令创建它:
$folder = New-Item -ItemType Directory -Force -Path "c:\tmp" -Name "myFolder"
然后你可以像这样在相同的脚本中删除它
$folder.Delete($true)
$true -递归删除的状态
简而言之,我们可以使用rm -r -fo {folderName}来递归地删除文件夹(删除里面的所有文件和文件夹)并强制
rm -r -fo {folderName}
Remove-Item C:\folder_name -Force -Recurse
如果你想要连接一个带有固定路径的变量和一个以字符串为动态路径的路径到删除的完整文件夹,你可能需要以下命令:
$fixPath = "C:\Users\myUserName\Desktop" Remove-Item ("$fixPath" + "\Folder\SubFolder") -Recurse
在变量$newPath中,连接路径现在是:"C:\Users\myUserName\Desktop\Folder\SubFolder"
$newPath
"C:\Users\myUserName\Desktop\Folder\SubFolder"
因此,你可以从起始点("C:\Users\myUserName\Desktop")删除几个目录,该起始点已经在变量$fixPath中定义并固定。
"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一致的有用别名。一些例子:
Remove-Item
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')