1

私はPowershellから数ヶ月離れていたので、これが明らかな場合はすみません..

何百ものファイルとフォルダーを含むディレクトリがあり、ルート ディレクトリとサブフォルダーの 1 つにあるすべてのファイルを除いて、すべてを削除したいと考えています。

これを週に 1 回行うようにスケジュールされたタスクを作成します。

これは私がこれまでに持っているものです:

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

しかし、私がフォルダを削除しているだけであることは明らかです..

4

3 に答える 3

4

1 つのサブフォルダーの内容を保持しますか、それともサブフォルダー自体のみを保持しますか? 前者の場合は次のようにします。

Get-ChildItem 'C:\foo' -Exclude 'subfoldername' |
    Where-Object { $_.PSIsContainer } |
    Remove-Item -Recurse -Force

後者の場合、2 番目の手順でサブフォルダーの内容を削除します。

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

このコマンドは、探していることを実行します。私が読んだことから、Remove-Item にはバグがあります。

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

これを試して

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