Powershell 如何从树中删除所有隐藏的不需要的目录?
我想使用从目录树中强制删除任何名为Powershell 如何从树中删除所有隐藏的不需要的目录?,powershell,powershell-4.0,Powershell,Powershell 4.0,我想使用从目录树中强制删除任何名为。不需要的的隐藏目录 我希望有一个足够简单的解决方案,让新手很容易理解和学习。我知道命令Get ChildItem和Remove Item,但我还不知道如何使用新类型的变量链接/管道它们。提供的Bash代码可以转换为以下代码: Get-Childitem *unwanted* -Recurse | Remove-Item -Confirm:$false -ErrorAction SilentlyContinue 根据权限的不同,您可能必须在第二个命令上使用-F
。不需要的的隐藏目录
我希望有一个足够简单的解决方案,让新手很容易理解和学习。我知道命令Get ChildItem
和Remove Item
,但我还不知道如何使用新类型的变量链接/管道它们。提供的Bash代码可以转换为以下代码:
Get-Childitem *unwanted* -Recurse | Remove-Item -Confirm:$false -ErrorAction SilentlyContinue
根据权限的不同,您可能必须在第二个命令上使用-Force参数。我还建议在任何生产环境中使用这些命令之前,对它们进行一些研究和测试。事情可能变得危险:)
我还将留下一篇关于PowerShell管道的好文章提供的Bash代码可以翻译成以下代码:
Get-Childitem *unwanted* -Recurse | Remove-Item -Confirm:$false -ErrorAction SilentlyContinue
根据权限的不同,您可能必须在第二个命令上使用-Force参数。我还建议在任何生产环境中使用这些命令之前,对它们进行一些研究和测试。事情可能变得危险:)
我还将留下一篇关于PowerShell管道的好文章您可以根据您的要求尝试类似的内容-
Get-ChildItem -path \\PathToYourFolder\ -recurse | where {$_.PSIsContainer -eq $true -and $_.Name -eq ".unwanted"} | Remove-Item
简单地说,PowerShell
管道将左侧的cmdlet
的输出作为输入传递给右侧的cmdlet
命令where{$\u.PSIsContainer-eq$true
使用所有文件系统对象的PSIsContainer
属性仅选择文件夹,这些文件夹的PSIsContainer
属性中的值为true($true)。您可以根据需要尝试类似的操作-
Get-ChildItem -path \\PathToYourFolder\ -recurse | where {$_.PSIsContainer -eq $true -and $_.Name -eq ".unwanted"} | Remove-Item
Get-ChildItem -Force -Recurse -Directory -Filter .unwanted |
Remove-Item -Force -Recurse -WhatIf
简单地说,PowerShell
管道将左侧的cmdlet
的输出作为输入传递给右侧的cmdlet
命令,其中{$\ PSIsContainer-eq$true
使用所有文件系统对象的PSIsContainer
属性仅选择文件夹,这些文件夹的PSIsContainer
属性中的值为true($true)
Get-ChildItem -Force -Recurse -Directory -Filter .unwanted |
Remove-Item -Force -Recurse -WhatIf
-WhatIf
预览移除;移除它以执行实际移除
-需要强制
,以锁定隐藏项(如果允许,在Windows上的删除项
的情况下,覆盖r
(只读)属性)
-Recurse
需要在整个子树中查找目录(Get ChildItem
),并在没有确认提示的情况下删除非空目录(remove Item
)
顺便说一句:使用-Filter
是查找感兴趣目录的最有效方法,因为它在源位置进行筛选,而(暗示)使用-Path
将使PowerShell首先枚举所有目录,然后进行筛选
-WhatIf
预览移除;移除它以执行实际移除
-需要强制
,以锁定隐藏项(如果允许,在Windows上的删除项
的情况下,覆盖r
(只读)属性)
-Recurse
需要在整个子树中查找目录(Get ChildItem
),并在没有确认提示的情况下删除非空目录(remove Item
)
顺便说一句:使用-Filter
是查找感兴趣目录的最有效方法,因为它在源位置进行筛选,而使用-Path
将使PowerShell首先枚举所有目录,然后进行筛选。如果不需要批处理文件答案,为什么要标记它为批处理文件?抱歉,现在已修复如果不需要批处理文件答案,为什么要标记它为批处理文件?抱歉,现在已修复这似乎找不到。不需要的
目录,除非它已被删除直接位于当前目录下。我正在尝试获取childitem.Understand-recurse | Remove Item
,现在我在microsoft.powershell.core\filesystem::D:\source\testdir\。Understand有子项,并且未指定recurse参数。如果继续,所有子项都将随该项一起删除。是否确实要继续吗?
。它使用删除项-force
说明相同。如何在没有用户确认的情况下执行此操作?这不会删除确认。我认为我犯了一个错误,您应该单独使用-force和-Confirm。我已经从示例中删除了-force,还添加了-ErrorAction SilentlyContinue。您可以o在这里找到相同的问题:它现在可以工作,但结果是我的。不需要的目录被隐藏,此解决方案只删除了非隐藏的目录。我尝试将-Force
添加到Get ChildItem
中,因此它也会返回隐藏的目录,但无法删除它们。当它尝试删除它们时,您会遇到什么错误?您知道吗将需要删除-ErrorAction首选项这似乎找不到不需要的
目录,除非它位于当前目录的正下方。我正在尝试获取childitem.Undored-recurse |删除项
,现在我在microsoft.powershell.core\filesystem::D:\source\testdir\不需要有子项且未指定递归参数。如果继续,将删除该项的所有子项。是否确实要继续?
。使用Remove item-force
,会显示相同的内容。如何在没有用户确认的情况下执行此操作?这不会删除确认我认为我犯了一个错误,您应该只使用-Force和-Confirm分开。我已经从我的示例中删除了-Force,还添加了-ErrorAction SilentlyContinue。你也可以在这里找到同样的问题:它现在可以工作了,但结果是我的。unwant