##はじめに
複数あるファイルのファイル名の末尾に一括して特定の文字を追加したいことがありました。例えば、複数の報告書があり、完成したものについてファイル名末尾に"_DONE"を追加しておき、完成したかどうかが視覚的にわかるようにしておく場合などです。
ファイルが1つや2つであれば別に良いのですが、10個とかあると結構大変です。そこで、WSHで自動化を考えました。
##コード
###JavaScript
まず、勉強がてらJavaScriptで記述してみました。
sample.js
var fso = new ActiveXObject("Scripting.FileSystemObject");
var args = WScript.Arguments;
for (var i=0; i<args.length; i++) {
var baseName = fso.GetBaseName(args(i));
var ext = fso.GetExtensionName(args(i));
var file = fso.GetFile(args(i));
baseName += "_DONE";
file.Name = baseName + "." + ext;
}
WScript.Echo("Complete");
###VBScript
続いて、慣れ親しんだVBScriptです。
sample.vbs
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim args
Set args = WScript.Arguments
Dim i
Dim baseName
Dim ext
Dim file
For i = 0 To args.Count - 1
baseName = fso.GetBaseName(args(i))
ext = fso.GetExtensionName(args(i))
Set file = fso.GetFile(args(i))
baseName = baseName & "_DONE"
file.Name = baseName & "." & ext
Next
WScript.Echo("Complete")
##まとめ
ファイル名を変更したいファイル群を選択し、コードを記述したファイルにドラッグ&ドロップするだけでファイル名の末尾に_DONEを追加することができました。一件落着。