CubePDF用の一括リネームスクリプト

CubePDFではjpgで保存すると既定ではdocument-001.jpg, document-002.jpg, ...という連番ファイル名になる。
これを変更するにはファイル名入力フォームをマウスでクリックしてファイル名を入力すれば良いのだが、
キーボードだけで済ませたいのでスクリプトを書いてみた。ついでに日時も入れられるようにした。


ps1ファイル

<#
.SYNOPSIS
番号違いのファイルを一括リネーム
.DESCRIPTION
ファイル名末尾に通し番号のついたファイル hoge001.foo のフルパスを引数に与えると、
同じディレクトリの番号違いのファイル hoge002.foo, hoge003.foo, ...も一括して
fuga001.foo, fuga002.foo, ... にリネームする。(fugaはユーザー入力)

通し番号のついていないファイル hoge.foo が与えられると、
単にfuga.fooにリネームされる。

また、ファイル名先頭に日時を入れるか選択できる。
#>
param([string]$file)

$useTimestamp = (Read-Host "ファイル名に日時を入れますか?(y/n)")
if($useTimestamp -eq 'y')
{
	$ts = Get-Date -f "yyyyMMdd hh-mm-dd"
}
else
{
	$ts = ''
}

$title = (Read-Host "タイトルを入力してください")

$parent = Split-Path $file -parent
$leaf = Split-Path $file -leaf

$basename = $leaf -replace '(\d+)?(\..+)$', '' # hoge001.foo -> hoge

gci "$parent" "$($basename)*$($matches[2])" -file | % { # hoge*.fooなファイル
	$_.FullName -match '(\d+)?\..+$' | Out-Null
	$parts = ( $ts, $title, $matches[0] ) | ?{ $_ -ne '' }
	$leaf = $parts -join ' '
	$fullname = Join-Path $parent $leaf
	ren $_.FullName $fullname
}

batファイル

powershell.exe "C:\script\rename.ps1" %1

使い方
CubdPDFの外部プログラムにbatファイルを指定して、

> ps | Out-Printer CubePDF

を実行すると、プロセス一覧がCubePDFによってPDF, JPEG等に保存される。
ファイル名にはタイムスタンプ(任意)、指定したタイトルが入る。