分かりやすく、使いやすく。

フォルダ内のファイル一覧を取得し、全てのファイルを処理する方法

スポンサーリンク

フォルダ内のファイルの一覧を取得するには Get-ChildItem コマンドレットを使用します。 Get-ChildItem は FileInfo オブジェクトのリストを返すので、 foreach を使うことで一件ずつ処理することができます。フォルダの場合は PSIsContainer が true に、ファイルの場合は false になるので、 PSIsContainer プロパティでファイルかフォルダかを見分けることができます。

  1. フォルダ内のファイルの一覧を取得し全てのファイルを処理する
  2. フォルダ内のファイルの一覧を取得し全てのファイルを処理する(サブフォルダ含む)


フォルダ内のファイルの一覧を取得し全てのファイルを処理する

指定したフォルダ内のファイルの一覧を取得して処理するサンプルコードは次の通りです。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 処理対象のフォルダ
$targetFolder = 'C:\temp\test';
 
# $targetFolder内のファイル・フォルダのリストを取得する。
$itemList = Get-ChildItem $targetFolder;
foreach($item in $itemList)
{
    if($item.PSIsContainer)
    {
        # フォルダの場合の処理
        Write-Host ($item.Name + 'はフォルダです。'); 
    }
    else
    {
        # ファイルの場合の処理
        Write-Host ($item.Name + 'はファイルです。'); 
    }
} 

フォルダ内のファイルの一覧を取得し全てのファイルを処理する(サブフォルダ含む)

サブフォルダ内のファイル・フォルダを再帰的に取得したい場合は、 Get-ChildItem に -Recurse を指定します。これにより、サブフォルダおよびサブフォルダ内のサブフォルダも全て再帰的に取得することができます。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 処理対象のフォルダ
$targetFolder = 'C:\temp\test';
 
# $targetFolder内のファイル・フォルダのリストを取得する。
# -Recurseを付けるとサブフォルダも検索する。
$itemList = Get-ChildItem $targetFolder -Recurse;
foreach($item in $itemList)
{
    if($item.PSIsContainer)
    {
        # フォルダの場合の処理
        Write-Host ($item.Name + 'はフォルダです。'); 
    }
    else
    {
        # ファイルの場合の処理
        Write-Host ($item.Name + 'はファイルです。'); 
    }
} 
スポンサーリンク
スポンサーリンク