現場で使っているPowershellスクリプトで、ドライブの中から指定したフォルダだけを
除外する必要があったのでその方法を調べました。
使用したコマンド
指定したフォルダのみを削除するには以下のコマンドを使用します。
Get-ChildItem Q:\ | where-Object { $_.PSIsContainer -and $_.Name -notin @("フォルダ名1", "フォルダ名2") }
このコマンドでは指定したドライブ(ここではQドライブ)内のフォルダを取得しています。
一つ一つ紐解いていくと、それぞれ以下のような意味を持っています。
Get-ChildItem Q:\
: 指定したドライブ(ここではQドライブ)内のすべてのフォルダとファイルを取得します。where-Object { $_.PSIsContainer -and $_.Name -notin @("フォルダ名1", "フォルダ名2") }
: 取得したアイテムをフィルタリングし、フォルダかつ指定した名前のフォルダを除外します。$_
: 現在のアイテムを表します。.PSIsContainer
: アイテムがフォルダであるかどうかを示すプロパティです。-and
: 論理AND演算子で、両方の条件が満たされることを意味します。.Name -notin @("フォルダ名1", "フォルダ名2")
: アイテムの名前が指定した名前のいずれでもない場合にTrueを返します。
使用例
このコマンドを使うときは他にも以下のよな事例があります。
バックアップ操作の対象から特定のフォルダを除外する場合
バックアップ操作を自動化するスクリプトを作成する際、特定のフォルダをバックアップから除外したい場合があります。
例えば、システムファイルや一時ファイルが含まれるフォルダを除外し、
重要なデータのみをバックアップしたい場合が想定されます。
特定のフォルダ以外のフォルダ一覧を取得する場合
特定のフォルダ以外のフォルダ一覧を取得する必要がある場合があります。
たとえば、特定のプロジェクトのフォルダを除外して、その他のフォルダの一覧を
表示したい場合が想定されます。
フォルダ構造を整理する際に特定のフォルダを除外する場合
大規模なフォルダ構造を整理する際、特定のフォルダを除外して他のフォルダを
操作する必要がある場合があります。
たとえば、古いバージョンのフォルダを整理する際に、最新のバージョンや
特定のプロジェクトのフォルダを除外して整理する必要があります。
最後に
このコマンドを実行すると、Qドライブ内のフォルダから、指定したフォルダ名を除外して取得されます。この機能は、大規模なフォルダ構造の中から特定のフォルダを抽出する際に便利です。
PowerShellをうまく活用して、作業の効率化を目指しましょう!