2016年6月24日金曜日

無効なPathの、有効な部分を調べるプログラムを作成した

メールなどで「○○のデータを下記Pathに保存しました」という連絡を貰うことがあります。
メールに記載されているPathをコピーして「Win + R」で「ファイル名を指定して実行」を呼出し、Pathを貼りつけてエンターキーを打つと、くだんのファイルが開く…と思いきや開かず以下のようなメッセージが出ることがあります。






上記のように短いPathなら手作業で探しても良いです。
上記の場合ならまずCドライブを開き、appというフォルダを開き、新しいフォルダーというフォルダを開くと…fuga.txtではなくfuga.txtがありました。多分コレです。という感じ。



あるいはスタートメニューの検索ボックスにPathを貼りつけて



終端から少しずつ削除してPathを短くしていくのも良いです。



しかしPathが長い時は面倒です。
「\\共通サーバ\○事業部\△支社\□部\×××\●●●●●●●●●\▲▲▲▲▲▲▲\…」のような長い長いPathが間違っていると検索ボックスで探すのも面倒です。。


そのようなワケで、Pathの有効な部分を調べるプログラムを作成しました。



インプットボックスにPathを貼りつけて「確認」ボタンを押すと、Pathが正しければ、それが開きます。
入力したPathに対応するファイルもフォルダもなければ、親フォルダのPathをチェックして、親フォルダも見つからなければそのまた親フォルダをチェックして、見つけたところで開きます。

上の図のように、「C:\app\新しいフォルダー」までは有効だったため、有効部はリンクとして表示されます。それ以降の無効な部分はリンク無し文字列として表示されます。

ソースは以下。
<html>
<title>Path有効部検索</title>
<body>
<input id=inp style="width:100%;">
<button id=btn>確認</button><br>
<a id=lnk href="#"></a><span id=span></span>
</body>
<script>
resizeTo(600,150)
fs = new ActiveXObject('Scripting.FileSystemObject')
shell = new ActiveXObject('WScript.Shell')
btn.onclick=function(){ メイン(inp.value) }
メイン=function(path){
var me=arguments.callee
if(me != me.caller){ me.path = path }
if(fs.FileExists(path) || fs.FolderExists(path)){
// どこまでのPathが有効だったのかを示す
lnk.href = lnk.innerText = path
// 無効部分も示す
span.innerText = me.path.slice(path.length, me.path.length)
return shell.run('"'+path+'"')
}
arguments.callee( fs.GetParentFolderName(path) )
}
</script>
</html>

0 件のコメント:

コメントを投稿