删除除一个文件夹和所有根文件之外的所有文件夹/文件

时间:2013-05-14 08:29:07

标签: powershell scheduled-tasks powershell-v2.0

我离Powershell有几个月的时间,如果这很明显,请原谅我。

我有一个包含数百个字段和文件夹的目录,我想删除根目录和其中一个子文件夹中所有文件的所有内容。

我将创建一个计划任务,每周执行一次。

这是我到目前为止所做的:

get-childitem -recurse | ?{ $_.psiscontainer } | remove-item

但很明显我只是删除文件夹..

3 个答案:

答案 0 :(得分:4)

您想要保留一个子文件夹的内容还是只保留子文件夹本身的内容?对于前者这样做:

Get-ChildItem 'C:\foo' -Exclude 'subfoldername' |
    Where-Object { $_.PSIsContainer } |
    Remove-Item -Recurse -Force

对于后者,在第二步中删除子文件夹的内容:

Get-ChildItem 'C:\foo' -Exclude 'subfoldername' |
    Where-Object { $_.PSIsContainer } |
    Remove-Item -Recurse -Force
Get-ChildItem 'C:\foo\subfoldername' | Remove-Item -Recurse -Force

使用PowerShell v3及更新版本,您可以通过向Where-Object添加参数-Directory来替换Get-ChildItem过滤器:

Get-ChildItem 'C:\foo' -Exclude 'subfoldername' -Directory |
    Remove-Item -Recurse -Force

答案 1 :(得分:0)

试试这个

get-childitem -exclude SubFolderName -recurse | ?{ $_.psiscontainer } | remove-item

答案 2 :(得分:0)

此命令可以满足您的需求。根据我的阅读,Remove-Item是错误的。

Get-ChildItem -Path D:\Temp -Recurse | Remove-Item -Exclude W3SVC5 -Recurse -force