如何删除除只读文件以外的文件夹中的所有文件?
答
唯一的对象,可以是只读的文件。当您使用Get-ChildItem
cmdlet时,您会收到类型为System.IO.FileInfo
和System.IO.DirectoryInfo
的对象。 FileInfos有一个名为IsReadOnly
的属性。所以,你可以这样做一个班轮:
dir -recurse -path C:\Somewhere | ? {-not $_.IsReadOnly -and -not $_.PsIsContainer} | Remove-Item -Force -WhatIf
的PsIsContainer
属性是由PowerShell的创建(诗前缀给它的距离),并告诉该项目是否是一个文件或文件夹。我们可以使用它仅将文件传递到Remove-Item
。
删除-WhatIf
当您准备删除真实。
答
检查每个文件夹和文件的属性,然后执行基于条件的删除。这只是伪代码。
If (-not (a readonly file)) {
delete file
}
因此,要检查是否一个给定的文件或文件夹是只读的:
$item = Get-Item C:\Scripts\Test.txt
$item.IsReadOnly
HTH
答
作为参考,这是在V3容易一点:
Get-ChildItem -Attributes !r | Remove-Item -Recurse -Force -WhatIf
或短(别名)版本:
dir -at !r | ri -r -f -wh