記事
WSHでショートファイル名からロングファイル名へ変換する
WSH
公開日:2009/02/10 00:00
試行錯誤した結果、どうやら、ShellのFolderItemオブジェクトのPathプロパティが常にロングファイル名を返してくれるようです。
そこで、こんな関数を作ってみました。
関数の仕様としては、入力したショートファイル名をパスとファイル名に分割し、それをFolderItemオブジェクトに当てはめ、パスを取得しているだけです。
これで大手を振って、4文字以上の拡張子が使用できますね。
そこで、こんな関数を作ってみました。
[JScript]
function getLongName(argPath){ // As String
var sh; //As Shell.Application
var fi; //As Shell.FolderItem
var cpyArg = "";
var dn = ""; // ディレクトリ名
var fn = ""; // ファイル名
var cpyArg = new String(argPath);
try{
sh = new ActiveXObject("Shell.Application");
// 引数のパスをディレクトリ名とファイル名に分割
cpyArg.search(/(.+\\)(.+)$/gi);
dn = RegExp.$1;
fn = RegExp.$2;
return sh.Namespace(dn).Items().Item(fn).Path;
}catch(ex){
return null;
}finally{
sh = null;
fi = null;
}
}
関数の仕様としては、入力したショートファイル名をパスとファイル名に分割し、それをFolderItemオブジェクトに当てはめ、パスを取得しているだけです。
これで大手を振って、4文字以上の拡張子が使用できますね。

