2012-01-18 104 views

回答

4

唯一的對象,可以是隻讀的文件。當您使用Get-ChildItem cmdlet時,您會收到類型爲System.IO.FileInfoSystem.IO.DirectoryInfo的對象。 FileInfos有一個名爲IsReadOnly的屬性。所以,你可以這樣做一個班輪:

dir -recurse -path C:\Somewhere | ? {-not $_.IsReadOnly -and -not $_.PsIsContainer} | Remove-Item -Force -WhatIf

PsIsContainer屬性是由PowerShell的創建(詩前綴給它的距離),並告訴該項目是否是一個文件或文件夾。我們可以使用它僅將文件傳遞到Remove-Item

刪除-WhatIf當您準備刪除真實。

1

檢查每個文件夾和文件的屬性,然後執行基於條件的刪除。這只是僞代碼。

If (-not (a readonly file)) { 
delete file 
} 

因此,要檢查是否一個給定的文件或文件夾是隻讀的:

$item = Get-Item C:\Scripts\Test.txt 
$item.IsReadOnly 

HTH

5

作爲參考,這是在V3容易一點:

Get-ChildItem -Attributes !r | Remove-Item -Recurse -Force -WhatIf 

或短(別名)版本:

dir -at !r | ri -r -f -wh