PMPの流儀

我が家の流儀

我が家で気になったことを夫婦で取り上げていきます

MENU

PowerShell フォルダから特定のファイルを抽出

PowerShell をつかうとフォルダ内から条件に一致するファイルを抽出する事が簡単にできます。最大の特徴であるオブジェクトをパイプ渡しする事で、簡潔に記載できるところがポイントです。Where-Object の ? と、For-Each の % を組み合わせることで、様々な処理が実現できます。

例) C:\temp フォルダで、更新日が2020/7/1 以降の xml ファイルを抽出します。
早速完成形をご覧ください。

#Set-ExecutionPolicy RemoteSigned -Scope Process

$dir="c:\temp"
$date="2020/07/01"
$filter="*.xml*"
$dir | Get-ChildItem -Recurse -Filter $filter | ? {$_.LastWriteTime -ge $date} | % {$_.FullName}

抽出は一行で完結しています。 ? は Where-Object の略で、フィルターをかけている所です % は For-Each の略で、パイプで渡された各ファイルオブジェクトの名称を取り出しています

日本語で書くと…

$dir を渡す | サブディレクトリから$filter の条件のファイルを渡す | 更新日時が $date 以降を渡す | フルパスを表示

こんな感じです。イメージついたでしょうか。