LoginSignup
5
6

More than 5 years have passed since last update.

ファイル名と同じディレクトリを作って中にファイルを移動する

Last updated at Posted at 2014-06-17
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 {
5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6