これは、上の「WSH」コーナー内 「8.3形式のパス名をクリップボードにコピーする(要コンポーネント)」 HTA版です。HTAでは、クリップボードも 使えます。

 これは、あくまで、“Pyxis”などのファイラー内で使うことを想定 していますが、コマンドラインからパス名の部分を抽出する際、かなり スマートでないことをやっていますので、 ファイラーによっては、スクリプトかファイラーの設定を調整しない といけないかもしれません。

ソースは、以下の通り
***** SPathClp.hta(2003/01/17改訂版) ***** <html> <head> <title>8.3形式でパスをコピー</title> <HTA:APPLICATION ID="aHTA" > </head><link rel="StyleSheet" href="../wsh/wsh.css"> <body> <!-- /////////////////////////////////////////////////////////// // // コマンドライン引数から受け取ったパス名を // 8.3形式にして、クリップボードにコピーするHTA // // by Shimizu 2003/01/17改訂 /////////////////// --> <script language="VBScript"> resizeTo 0,0 'ウィンドウのサイズを小さく Dim myStr, thisPath Dim myArr Dim objFS, objFile, objFolder '//コマンドラインから配列を作る。 myStr = aHTA.commandLine If Left(myStr,1) = """" Then myArr = Split(myStr,""" ") thisPath = myArr(0) & """" Else myArr = Split(myStr," ") thisPath = myArr(0) End If '//コマンドラインからパス名が渡されていないときは、終了 If UBound(myArr) < 1 Then MsgBox "パスが指定されていません。",48 Close() ElseIf myArr(1) = "" Then MsgBox "パスが指定されていません。",48 Close() End If '//コマンドライン全体から自分自身のパスを取る myStr = LTrim(Replace(myStr,thisPath,"",1,1)) '//渡されたパスが " で囲まれていれば、" を取る If Left(myStr,1) = """" Then myStr = Mid(myStr,2,Len(myStr)-2) End If '/// 受け取ったパスを8.3形式に変換する Set objFS = CreateObject("Scripting.FileSystemObject") '//パスがファイル If objFS.FileExists(myStr) Then '受け取ったパスのFileオブジェクトを取得 Set objFile = objFS.GetFile(myStr) 'ファイルパスを8.3形式に変換 myStr = objFile.ShortPath '//パスがフォルダ ElseIf objFS.FolderExists(myStr) Then '受け取ったパスのFoldreオブジェクトを取得 Set objFolder = objFS.GetFolder(myStr) 'ファイルパスを8.3形式に変換 myStr = objFolder.ShortPath Else MsgBox "該当するファイル、フォルダが有りません。",48 Close() End If '/// '//クリップボードにコピー clipboardData.setData "Text",myStr '結果を報告 MsgBox """" & myStr & """を" & vbCR &_ "クリップボードにコピーしました。",64,_ "8.3形式のパスをコピー" Close() '//終了 </script> </body> </html>
 Pyxisでのランチャー設定例は
(下の例では、"SPathClp.hta"は、"c:\Script"内にあります。)



 Pyxis(シェアウェア)の入手先は、 ベクター内または、 〜Tom〜さんのページにて



戻る