電子顕微鏡には元素分析装置がついている場合がある。測定結果、特にマッピング分析というものをしたあと、個別のデータを画像で出力すると次のようになる。
sample1 IMG1.jpg
sample1 C K.jpg
sample1 O K.jpg
sample1 Si K.jpg
sample1 Cr K.jpg
sample1 Fe K.jpg
sample1 Ni K.jpg
sample1 Pt L.jpg
このままでもいいのだが、ファイル名の順番にソートすると原子番号がくちゃくちゃになってしまうので原子番号を付与したファイル名に付け替えたい。
ファイル名は
代表名␣元素記号␣X線.jpg
というようなルールになっている。代表名にスペースがあるかもしれないため、ファイルをスペースで区切って、元素記号に相当するところを2桁の原子番号+元素記号として名前を付け替える。
だいたい次のようなもので処理ができる。goo blogはプログラムコードを乗せると時々何らかの記号を省略するので画像とコードと両方を乗せることにする。
rename.vbsのようなファイルに下記の内容を記載し、保存。このvbsファイルにjpgファイルなどをまとめてドロップすれば名前を付け替えてくれる。
VBにはあるのだが、VBScriptにはformat関数がなかったので、原子番号2桁の処理は1000+原子番号の右側2文字を使うようにした。元素名前の配列は、原子番号をnとするとZ(n)が元素記号になるようあものを作って実施。Z(0)になにか入れないと行けないので、0を入れることにした。
IMGというものがつくのはマッピングエリアにおけるSEM像なのでファイル名でソートして一番上に来てほしいので00IMGとなるようにした。ファイル名を処理すると次のようになり、ファイル名ソートで原子番号ソートになってくれる。
sample1 00IMG1.jpg
sample1 06C K.jpg
sample1 08O K.jpg
sample1 14Si K.jpg
sample1 24Cr K.jpg
sample1 26Fe K.jpg
sample1 28Ni K.jpg
sample1 78Pt L.jpg
Option Explicit
Dim Z
Z = split("0,H,He,Li,Be,B,C,N,O,F,Ne,Na,Mg,Al,Si,P,S,Cl,Ar,K,Ca,Sc,Ti,V,Cr,Mn,Fe,Co,Ni,Cu,Zn,Ga,Ge,As,Se,Br,Kr,Rb,Sr,Y,Zr,Nb,Mo,Tc,Ru,Rh,Pd,Ag,Cd,In,Sn,Sb,Te,I,Xe,Cs,Ba,La,Ce,Pr,Nd,Pm,Sm,Eu,Gd,Tb,Dy,Ho,Er,Tm,Yb,Lu,Hf,Ta,W,Re,Os,Ir,Pt,Au,Hg,Tl,Pb,Bi,Po,At,Rn,Fr,Ra,Ac,Th,Pa,U",",")
Dim GetPathArray
Set GetPathArray = WScript.Arguments
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim pt
Dim FileName
Dim FileObj
Dim SplitedFileName
Dim ElementName
Dim i
for each pt in GetPathArray
FileName = objFSO.GetFileName(pt)
set FileObj = objFSO.GetFile(pt)
SplitedFileName = Split(FileName," ")
ElementName = SplitedFileName(UBound(SplitedFileName)-1)
For i = 1 to 92
if ElementName = Z(i) then
SplitedFilename(UBound(SplitedFileName)-1) = right(1000+i,2) & ElementName
FileObj.Name = Join(SplitedFilename," ")
end if
next
if left(SplitedFileName(UBound(SplitedFileName)),3)="IMG" then
SplitedFileName(UBound(SplitedFileName))="00" & SplitedFileName(UBound(SplitedFileName))
FileObj.Name = Join(SplitedFilename," ")
end if
next
Set objFSO = Nothing
Set FileObj = Nothing