1

我已经离开 Powershell 几个月了,如果这很明显,请原谅我。

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

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

这是我到目前为止所拥有的:

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

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

4

3 回答 3

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过滤器:-DirectoryGet-ChildItem

Get-ChildItem 'C:\foo' -Exclude 'subfoldername' -Directory |
    Remove-Item -Recurse -Force
于 2013-05-14T12:57:50.470 回答
0

尝试这个

get-childitem -exclude SubFolderName -recurse | ?{ $_.psiscontainer } | remove-item
于 2013-05-14T09:47:54.853 回答
0

该命令将执行您要查找的操作。从我读过的内容来看,Remove-Item 是有问题的。

Get-ChildItem -Path D:\Temp -Recurse | Remove-Item -Exclude W3SVC5 -Recurse -force
于 2016-08-10T21:33:59.990 回答