【PowerShell】指定フォルダ配下(サブフォルダ含む)の、全ての対象ファイルに対して処理を行う【再帰】

指定フォルダ配下(サブフォルダ含む)の
 ・全ての対象ファイル
に対し、処理を行うコードを記載します!

コード

ここでは例として
 ・デスクトップにある「test」フォルダ配下の
 ・全てのcsvファイルのみに対して処理(ファイルパスを画面へ出力)
をします。
※「test」フォルダには「csvファイルを含む複数のファイル」があります。
※「test」フォルダには「sub」フォルダがあります。
※「sub」フォルダには「csvファイルを含む複数のファイル」があります。

「test」フォルダ
「test」フォルダ
「test」フォルダの中の「sub」フォルダ
「test」フォルダの中の「sub」フォルダ
# 対象フォルダ
$targetFolder = "C:\Users\user\Desktop\test"
# 対象ファイル
$targetFile = "*.csv"

$ws = New-Object -ComObject Wscript.Shell

try
{
    # 指定フォルダ配下(サブフォルダ含む)の全ての対象ファイルのリストを取得
    $fileList = (Get-ChildItem $targetFolder -Filter $targetFile -Recurse -ErrorAction Stop).FullName

    # 対象ファイルのリストの数だけ繰り返し
    foreach($file in $fileList){
        #ファイルパスを画面へ出力
        Write-Output $file 
    }
}
catch
{
    $ws.popup("エラー : " + $PSItem)
}

対象フォルダを設定します(2行目)。

対象ファイルを設定します(4行目)。
※上記では「csvファイル」を指定しています。
※全てのファイルを対象とするときは「*.*」とします。

「Get-ChildItem」コマンドレットにより「ファイル一覧」を取得して、「FullName」により取得したファイル一覧の「ファイルのフルパスのみ」を取得します(11行目)。
※「-Filter」に「対象ファイル」を指定します。
※「-Recurse」を記載することで、サブフォルダも対象にします(再帰するようにします)。

※「Get-ChildItem」コマンドレットで例外が発生したら例外処理が実施されるようにするため、「-ErrorAction Stop」を記載します。

対象ファイルのリストの数だけ繰り返し処理をします(14~17行目)。

実行結果

指定フォルダ配下(サブフォルダ含む)の、全ての対象ファイルに対して処理できました。
※サブフォルダも含め、全てのcsvファイルのみに対して処理できました。

実行結果
実行結果

参考

上記のコードで使用した以下の詳細は、公式サイトをご確認ください。

●「Get-ChildItem」コマンドレット


●「foreach」について


●「Write-Output」コマンドレット

タイトルとURLをコピーしました