【PowerShell】フォルダ内のファイルをループする

PowerShell

特定のフォルダ内のファイルをループする

特定のフォルダからファイル一覧を取得し、そのファイル分処理を行いたい場合の例を紹介します。

# "C:\test"フォルダからファイルの一覧を取得する
$folderFileList = Get-ChildItem -File "C:\test"

# 取得したファイル数分ループする
foreach($item in $folderFileList)
{
    # ファイル名を表示する
    Write-Host $item.Name
}

# 実行結果
Book1.xlsx
Book2.xlsx
Book3.xlsx
testfile.txt
testfile2.txt
testfile3.txt

 

 

 

特定のフォルダ内のファイルをループする(サブフォルダも含む)

ファイル一覧を取得する際に、サブフォルダ内も含めて検索するには「-Recurse」を付けて実行します。

# "C:\test"フォルダからファイルの一覧を取得する(サブフォルダも含む)
$folderFileList = Get-ChildItem -Recurse -File "C:\test"

# 取得したファイル数分ループする
foreach($item in $folderFileList)
{
    # ファイル名を表示する
    Write-Host $item.Name
}

# 実行結果
Book1.xlsx
Book2.xlsx
Book3.xlsx
testfile.txt
testfile2.txt
testfile3.txt
Book1.xlsx     # ←これはサブフォルダ内のファイル
Book2.xlsx     # ←これはサブフォルダ内のファイル
testfile.txt   # ←これはサブフォルダ内のファイル
testfile2.txt  # ←これはサブフォルダ内のファイル

 

 

 

特定のフォルダ内のファイルをループする

フォルダからファイル一覧を取得する際に、拡張子でフィルタする例です。

# "C:\test"フォルダからファイルの一覧を取得する
# 拡張子に「.xls」を含むファイル一覧を取得する(.xls , .xlsx , .xlsmなどを含む)
$folderFileList = Get-ChildItem -File "C:\test" -Filter *.xls*

# 取得したファイル数分ループ
foreach($item in $folderFileList)
{
    # ファイル名を表示する
    Write-Host $item.Name
}

# 実行結果
Book1.xlsx
Book2.xlsx
Book3.xlsx