PowerShell清理文件夹内容后子文件夹未删除的原因咨询
为什么你的PowerShell命令没删除子文件夹?
咱们来拆解一下你这条命令的问题核心,其实原因很直接:
- 你加了
-File参数:这个参数会强制Get-ChildItem只返回指定路径下的文件对象,完全忽略所有子文件夹。所以你的整个循环里根本没有处理任何文件夹,自然删不掉子文件夹。 - 顺带提个小细节:
-Include *.*会过滤掉没有扩展名的文件(比如命名为readme的无后缀文件),不过这不是子文件夹没被删除的主因。
修正方案:彻底清空文件夹内容
如果你的目标是完全清空testdir1里的所有内容(文件+子文件夹),最高效的方式是直接用Remove-Item的递归删除功能:
$pathvar = "D:\temp\testdir1" Remove-Item -Path "$pathvar\*" -Recurse -Force
"$pathvar\*"确保只删除文件夹内的内容,不会删掉testdir1本身-Recurse自动处理所有子文件夹及其内容-Force强制删除只读、隐藏等特殊属性的文件/文件夹
如果你想保留遍历的方式
如果一定要沿用原命令的遍历结构,需要去掉-File参数,同时用更稳妥的方式处理文件夹(直接调用Delete()方法无法删除非空文件夹):
$pathvar = "D:\temp\testdir1" Get-ChildItem -Path $pathvar -Recurse | ForEach-Object { Remove-Item -Path $_.FullName -Force -Recurse }
内容的提问来源于stack exchange,提问作者bitshift
相关产品推荐
相关产品推荐

