ポイントは、
- PDFファイルは、ADODB.Stream を使って UTF-8 のテキストモードで読み込む
- 読み込んだデータから、正規表現でページヘッダを探してカウントする
この2つだけ。
※ VBSファイル自体は Shift-JIS で保存することを忘れずに
VBScript
'// PDFページ数取得.vbs
'// エクスプローラ上で、このスクリプトファイルに PDFファイル(複数可)をドラッグ&ドロップする
Set adoStream = CreateObject("ADODB.Stream")
Set fso = CreateObject("Scripting.FileSystemObject")
Set regEx = CreateObject("VBscript.RegExp")
regEx.Global = True
regEx.Pattern = "/Type\s*/Page[^s]"
reStr = "ファイル名" & vbTab & "ページ数"
For Each arg In WScript.Arguments
If fso.GetExtensionName(arg) = "pdf" Then
With adoStream
.Charset = "UTF-8"
.Type = 2 '//[1:バイナリモード] [2:テキストモード]
.Open
.LoadFromFile arg
pageCnt = regEx.Execute(.ReadText).Count
.Close
End With
reStr = reStr & vbCrLf & fso.GetFileName (arg) & vbTab & pageCnt
End If
Next
Msgbox reStr