3
A
回答
4
唯一的對象,可以是隻讀的文件。當您使用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
當您準備刪除真實。
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