背景
日次で特定フォルダの配下を消そうと考えたが、一部の複数フォルダは残したい気分になったので、除外(Exclude)オプションを調べてみたところ、単一の除外しか見当たらなかったので、試してみた。
最低限、こんな感じで動きそう。
$delFolder = “c:¥work¥delTerget¥*”
$excludeItem = “除外フォルダ名1” , “除外フォルダ名2”
Remove-Item $delFolder -Exclude $excludeItem
-Exclude
オプションに除外対象の配列を教えてあげれば、汲み取ってくれるらしい。
とはいえ、スクリプト化する事を考えると、除外対象は直書きしたくない。直すの面倒だし。
別ファイルに除外対象を記載して、読み取るようにしてみた。
$delFolder = “c:¥work¥delTerget¥*”
$excludeFile = “.¥exclude.txt”
$excludeItem = ( Get-Content $excludeFile )
Remove-Item $delFolder -Exclude $excludeItem
除外フォルダ名1
除外フォルダ名2
ついでに、削除後の確認とかTest-Path使う時も同じように-Exclude
オプションが使えるみたい。便利
Test-Path $delFolder -Exclude $excludeItem
Remove-Item後に上記Test-Pathを実行すると、除外対象フォルダが存在していても、False
を返してくれる。
おまけ1
-Exclude
オプションはアスタリスク指定も出来るみたい。
*外フォルダ*
おまけ2
-Exclude
オプションで指定する値について
タイトルにフォルダの•••って書いちゃったけど、フォルダとかファイルとかは関係なさそう。
その文字列に該当するオブジェクトを除外している模様。
おまけ1で書いた条件で実行すると、除外フォルダ名1.txtも削除から除外される。
#最後に
-Include
オプションで、配列指定があったので、出来るだろって思ってやったらできた。
試すって大事