2012年04月15日

名前の重複を検出するために辞書を使う

プログラミングにおける「辞書」は、紙の辞書でもなければ、電子辞書でもありません。 キーワードから、対応する値やオブジェクトを取得できる集合のことです。 連想配列、ハッシュと呼ばれることもあります。

vbslib4 で、フォルダーの中にあるすべてのファイルの名前を一度に変更する Rename コマンドが用意されていますが、名前を変更した後、名前が重複していたら、変更を取り消すことができます。

単純にファイル名を変更していくと、1つ1つファイル名を変更していって、ある1つが別のファイル名に重複していたら、エラーになり、そこで処理が中断すると、いくつかのファイルだけ名前が変更された状態になります。 これでは、ユーザーにとって混乱を招きます。

そこで、事前に名前の重複を検査する仕組みを入れているのですが、そのときに辞書を使っています。

'// 重複をチェックする
Set file_names = CreateObject( "Scripting.Dictionary" )
file_names.RemoveAll
For Each file in folder.Files
 new_name = Mid( file.Name, FirstDelCount + 1 )

 If file_names.Exists( new_name ) Then
  echo "重複しています: "+new_name
  Exit For
 End If

 file_names( new_name ) = True
Next

'// 実際にファイル名を変更する
 :

sage_p at 23:50│Comments(0)TrackBack(0) プログラミング 

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔