Wordファイルのページ数を取得する

読者
読者
複数あるファイルのページ数を一括で取得したい
PowerShellを使えば取得できるよ
管理人
管理人

作成したWordファイルのページ数を取得したいことがありませんか?
類似システムのWordファイルの頁数を基に、設計作業の見積り根拠にしたり、
成果物の納品報告書の頁数を記入したり。。。等々

対象のファイルが数ファイルなら、1ファイルずつ開いて確認できます。
ですが、複数ファイルもあったり、フォルダがネストして格納していると、指定が面倒です。
そういう時は、次のPowerShellを使って、一括に取得してしまいましょう。

ソース(page-count.ps1)

# 結果出力(C:\temp\output.csvに結果を出力する)
$outpath = “C:\temp”
$output = $outpath + “/output.csv”

# 引数チェック
function usage {
Write-Host “Usage: “page-output.ps1 Input-dir “<directory path>”
exit 1
}

if ($args.length -eq 0) {
usage
}

$inpath= $args

# 出力ファイルを削除
if (Test-Path $output) {
Remove-Item -Path $output
}

# 指定されたパス配下のファイルを取得(サブフォルダも対象+docファイルのみ)
$target = Get-Childitem $inpath -r -include *.doc -exclude *コピー*,*.back,~* | Where-Object {-not $_.PSIsContainer}

# WSHのShellオブジェクトを生成
$shell = New-Object -Com Shell.Application

# ファイル分だけ繰り返す
$target | ForEach-Object {

# GetDetailsOfに必要なオブジェクト
$folderobj = $shell.NameSpace($_.DirectoryName)
$item = $folderobj.ParseName($_.name)

# ファイル出力
$_.DirectoryName + “\” + $_.name + “`,” + $folderobj.GetDetailsOf($item,157) | Add-Content $output
}

 

プロパティの取得(ページ数を表す番号を確認する)

もし、GetDetailsOf($item,157)でページ数が取得できない場合に下記のソースを実行して、番号(=157)を確認する

$sh = New-Object -ComObject Shell.Application
$folderobj = $sh.Namespace(‘C:\test’)
$item = $folderobj.ParseName(‘サンプル.docx’)
for($i = 0; $i -lt 300; $i++){
echo ([string]$i + ” : ” + $folderobj.GetDetailsOf($item, $i))
}

実行

PS C:\> page-count.ps1 対象ディレクトリ名

※C:\temp\output.csvに結果が出力されます。

コマンドの解説(備忘録)

ファイルの絞り込み -include

# 単一の拡張子で絞り込む場合(例:docファイルのみ取得)
PS C:\> Get-ChildItem -File -r -include *.doc

# 複数の拡張子で絞り込む場合(例:docファイル、dotファイルを取得)
PS C:\> Get-ChildItem -File -r -include *.doc,*.dot

ファイルの除外 -exclude

# 単一の拡張子で除外する場合(例:docファイルを除外)
# 例)jpg拡張子を含まないファイルを取得する
PS C:\> Get-ChildItem -File -r -exclude *.doc

# 複数の拡張子で除外する場合(例:docファイル、dotファイルを除外)
PS C:\tmp> Get-ChildItem -File -r -exclude *.doc,*.dot

SNSでもご購読できます。

最近の投稿

コメントを残す

*