LoginSignup
0
0

More than 3 years have passed since last update.

Remove-Itemで、複数のフォルダを削除対象外にしたい

Posted at

背景

日次で特定フォルダの配下を消そうと考えたが、一部の複数フォルダは残したい気分になったので、除外(Exclude)オプションを調べてみたところ、単一の除外しか見当たらなかったので、試してみた。

最低限、こんな感じで動きそう。

powershell
$delFolder = c:¥work¥delTerget¥*
$excludeItem = “除外フォルダ名1 , “除外フォルダ名2
Remove-Item $delFolder -Exclude $excludeItem

-Excludeオプションに除外対象の配列を教えてあげれば、汲み取ってくれるらしい。

とはいえ、スクリプト化する事を考えると、除外対象は直書きしたくない。直すの面倒だし。
別ファイルに除外対象を記載して、読み取るようにしてみた。

powershell
$delFolder = c:¥work¥delTerget¥*
$excludeFile = .¥exclude.txt
$excludeItem = ( Get-Content $excludeFile )

Remove-Item $delFolder -Exclude $excludeItem
exclude.txt
除外フォルダ名1
除外フォルダ名2

ついでに、削除後の確認とかTest-Path使う時も同じように-Excludeオプションが使えるみたい。便利

powershell
Test-Path $delFolder -Exclude $excludeItem

Remove-Item後に上記Test-Pathを実行すると、除外対象フォルダが存在していても、Falseを返してくれる。

おまけ1

-Excludeオプションはアスタリスク指定も出来るみたい。

exclude.txt
*外フォルダ*

おまけ2

-Excludeオプションで指定する値について
タイトルにフォルダの•••って書いちゃったけど、フォルダとかファイルとかは関係なさそう。  
その文字列に該当するオブジェクトを除外している模様。  
おまけ1で書いた条件で実行すると、除外フォルダ名1.txtも削除から除外される。

最後に

-Includeオプションで、配列指定があったので、出来るだろって思ってやったらできた。
試すって大事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0