1.07.2012

How to get full path to the script in HTA, etc..

HTA、他: 自分自身のフルパスを取得する方法

スクリプトファイルの自分自身のパスと、その親ディレクトリを取得する方法の一覧。
実現方法はいずれも一例である。

・HTA (HTML Applications) – VBScript

path = unescape(window.location.pathname)
If window.location.host <> "" Then path = "\\" & window.location.host & path
dir = CreateObject("Scripting.FileSystemObject").GetParentFolderName(path)

 パスに空白が含まれている場合、unescape を行わないと「%20」のように
 パーセントエンコーディングされたままである可能性がある。
 <script>タグの間では、window. を省略可能。
 ※2012/06/16 追記: location.host を参照し、UNCパスに対応

・VBScript

path = WScript.ScriptFullName
dir = CreateObject("Scripting.FileSystemObject").GetParentFolderName(path)
WScript.Echo path & vbCrLf & dir

・Bourne Shell

path=`(cd \`dirname $0\` && pwd)`/`basename $0`
dir=`dirname $path`
echo "${path}\n${dir}"
 2011/12/21 の記事の再掲。

・Perl

use File::Basename;
use File::Spec;
$path = File::Spec->rel2abs(__FILE__);
$dir = dirname $path;
print "$path\n$dir\n";
 __FILE__ に替えて $0 を使う方法もある。それらに直接フルパスが格納されるかは処理系依存の模様。
 Cwd モジュールなどを使った他のやり方も多く存在。
 
・Python
import os
path = os.path.abspath(__file__)
dir = os.path.dirname(path)
print '%s\n%s' % (path, dir)

 __file__ にフルパスが入るかは処理系依存の模様。
import sys を行なってから sys.argv[0] を参照する方法でも代替可能。

・Windows バッチファイル ※2012/04/01追記

@echo off
set full_path=%~f0
set dir=%~dp0
echo %full_path%
echo %dir%
ディレクトリには、末尾の '\' が付加されているので注意。
詳細情報は for /? で確認することもできる。

参考:
http://www.jazoka.info/index.php?db=so&id=84932

0 件のコメント:

コメントを投稿