windows - 如何使用 PowerShell 删除 OneDrive 中的非空文件夹?
问题描述
说明
无法删除 OneDrive 目录中的非空文件夹
重现步骤
- 在 OneDrive 目录中启动 PowerShell
PS C:\Users\MyUserName\OneDrive>
- 尝试使用 Remove-Item cmdlet 删除此目录中的非空文件夹,例如:.\test\ 文件夹
PS C:\Users\MyUserName\OneDrive> Remove-Item .\test\
预期结果
如果没有 -Recurse 参数,PowerShell 应该返回一条确认消息,例如
Confirm
The item at C:\Users\MyUserName\OneDrive\test\ has children and the Recurse parameter was not specified. If you continue, all children will be removed with the item. Are you sure you want to continue?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):
实际结果
PowerShell 返回错误消息
Remove-Item: Cannot remove item C:\Users\MyUserName\OneDrive\test\: The directory is not empty. : 'C:\Users\MyUserName\OneDrive\test\'
笔记
- PowerShell 和 Administrator:PowerShell 得到相同的结果;
- 如果我退出 OneDrive 进程并在 OneDrive 目录下创建一个新的非空文件夹,PowerShell 可以正常删除它(请参阅注 4,因为未同步的文件夹没有 ReparsePoint 属性);
- CMD 可以成功删除文件夹,这意味着我也可以在 PowerShell 中使用以下命令来删除文件夹。但我只想通过 PowerShell cmdlet 来实现我的目标;
cmd.exe /C "rd /s test"
- Get-ChildItem cmdlet 显示普通文件夹(未通过 OneDrive 同步)的模式为“d”(目录),但同步文件夹的模式为“l”(reparsepoint)。这是我无法正常删除 OneDrive 目录下的文件夹的原因吗?
版本信息
PS版本:7.1.3
操作系统:微软Windows 10.0.19042
OneDrive 版本:21.052.0314.0001 (Office 365 A1)
更新
我尝试删除 PowerShell 5 上的测试文件夹,但也失败了。
来自 PowerShell 5.1 的错误消息:
PS C:\Users\MyUserName\OneDrive> Remove-Item .\test\ -Force -Recurse
Remove-Item : Access to the cloud file is denied.
At line:1 char:1
+ rm .\test\ -Force -Recurse
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Remove-Item], Win32Exception
+ FullyQualifiedErrorId : System.ComponentModel.Win32Exception,Microsoft.PowerShell.Commands.RemoveItemCommand
解决方案
上一个答案没有处理隐藏文件,您可以将这些添加到您的个人资料中
function rmc ($file) {
(Get-Item $file).Delete()
}
function rmd ($folder) {
Get-ChildItem -recurse -force $folder | Sort-Object -Property FullName -Descending | ForEach-Object { $_.Delete() }
(Get-Item $folder).Delete()
}
推荐阅读
- python - 加入具有不同行数和列数的两个熊猫数据框
- html - 如何使用 css 更改 Html 视频的大小
- xquery - 如何在 eXist-db 的备份/恢复中维护自定义 ACL
- sql - 使用带有 AND 语句的 IF 语句来计算列数 > 目标
- c# - 从 .NET Core 控制器返回生成的 HTML
- xamarin - 此 Xamarin Forms ContentPage 中的此空白行来自哪里?
- javascript - 如何在 React 中获取 Drupal 数据库中的用户节点?
- excel - DataValidation List 比较是否相同?
- javascript - Shopify“添加到购物车”无法正常工作
- xamarin - 访问集合 List Xamarin xaml 中的集合