function Get-Basename($filename) {
#ファイル名から拡張子を取り除く
$filename = $filename.Replace(".tif","")
#ファイル名からカッコを取り除く
$idx = $filename.LastIndexof("(")
if ( $idx -ge 1) {
$filename = $filename.Remove($idx)
}
#拡張子とカッコを除いたファイル名を戻り値として返す
return $filename
}
function Create-Surveyname($filename) {
#初期値設定
$i = 1
$basename = "sokuryouzu"
$ex = ".tif"
$n = "0" + $i.ToString()
$svname = $basename + $n + $ex
#sokuryouzu01から同じファイル名が存在しなくなるまで数字を大きくする
while (Test-Path(".\" + $filename + "\" + $svname)) {
#カウンターを上げる
$i++
#カウンターが1桁だった場合は2桁になるようにゼロ埋めする
if ( $i.Length -ne 2 ) {
$n = "0" + $i.ToString()
}else{
$n = $i.ToString()
}
#新しい番号で名前を作り直す
$svname = $basename + $n + $ex
}
return $svname
}
Get-ChildItem -Name *.tif | Sort-Object | ForEach-Object {
#ファイル名から拡張子とカッコを取り除く
$basename = Get-Basename($_)
#ファイル名のディレクトリを確認して存在しなければディレクトリを作成する
if ( (Test-Path($basename)) -eq $False) {
New-Item -Type Directory $basename
}
#新しいファイル名を設定
$svname = Create-Surveyname($basename)
$svname = ".\" + $basename + "\" + $svname
#TIFFファイルを所定のファイル名に変更して移動する
Move-Item $_ $svname
echo $svname
}
%地番%.tif
というTIFFファイルがあるディレクトリで実行すると、%地番%
ディレクトリを作ってからTIFFファイルをsokuryouzu##.tif
という名前に変更して移動するスクリプトです。
例によって不動産登記規則第73条第1項の規定により法務大臣が定める土地所在図等の作成方式で定められたファイル名に変更しています。
1つの地番が複数枚になっていた場合、ファイル名がカッコ番号で順番に並んでいればsokuryouzu##.tif
の##
を順に大きい数字にしていきます。
たとえば、100-1(1-3).tif
100-1(2-3).tif
100-1(3-3).tif
という図面があったら、100-1
というディレクトリを作成し、その中にそれぞれsokuryouzu01.tif
sokuryouzu02.tif
sokuryouzu03.tif
というファイル名に変更して移動されるはずです。
たぶんこれで大丈夫…。
ファイル名が正しく変更できないバグがあったので修正
- if ( $i.Length -eq 1 ) {
+ if ( $i.Length -ne 2 ) {
-Get-ChildItem -Name *.tif | ForEach-Object {
+Get-ChildItem -Name *.tif | Sort-Object | ForEach-Object {