2012-01-18 12 views

答えて

4

読み取り専用ファイルであることができるオブジェクトのみ。 Get-ChildItemコマンドレットを使用すると、System.IO.FileInfoおよびSystem.IO.DirectoryInfoのオブジェクトが戻ってきます。 FileInfosのプロパティはIsReadOnlyです。

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

PsIsContainerプロパティはPowerShellのによって作成された(詩のプレフィックスがそれを離れて与え)と項目がファイルまたはフォルダであるかどうかを判断している。だから、この1つのライナーを行うことができます。これを使用してファイルのみを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 
関連する問題