PowerShellで、ファイル検索した結果をExcel出力させるサンプル
まずは、出力先のファイルパスと検索対象のファイルパスを指定する。
1 2 3 |
$FileName = "Out.xlsx" $FullPath = Join-Path $PSScriptRoot $FileName $CheckPath = $PSScriptRoot |
Excel出力用の見出し列をenumで定義(VBAでよく使うパターン)
1 2 3 4 5 6 7 8 |
#excel用の見出し列 enum LayOut { DirectoryName = 1 Name CreationTime LastAccessTime LastWriteTime } |
Get-ChildItem でファイル情報を取得、Excelを作成
1 2 3 4 5 6 7 |
#------ 処理開始 $datas = Get-ChildItem -Force -Path $CheckPath $excel = New-Object -ComObject Excel.Application $excel.Visible = $true $book = $excel.Workbooks.Add() $book.Sheets(1).Name = "ファイル一覧" $sheet = $book.Sheets("ファイル一覧") |
結果出力
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#ヘッダ $RowIndex = 1 $sheet.Cells.Item($RowIndex, [LayOut]::DirectoryName) = "DirectoryName" $sheet.Cells.Item($RowIndex, [LayOut]::Name) = "Name" $sheet.Cells.Item($RowIndex, [LayOut]::CreationTime) = "CreationTime" $sheet.Cells.Item($RowIndex, [LayOut]::LastAccessTime) = "LastAccessTime" $sheet.Cells.Item($RowIndex, [LayOut]::LastWriteTime) = "LastWriteTime" #データ書き込み foreach ($data in $datas) { $sheet.Cells.Item($RowIndex, [LayOut]::DirectoryName) = $data.DirectoryName $sheet.Cells.Item($RowIndex, [LayOut]::Name) = $data.Name $sheet.Cells.Item($RowIndex, [LayOut]::CreationTime) = $data.CreationTime $sheet.Cells.Item($RowIndex, [LayOut]::LastAccessTime) = $data.LastAccessTime $sheet.Cells.Item($RowIndex, [LayOut]::LastWriteTime) = $data.LastWriteTime $RowIndex++ } |
保存
1 2 3 4 |
#保存 $book.SaveAs($FullPath) $excel.Quit() $excel = $null |
コメント