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}"
・Perl
use File::Basename;
use File::Spec;
$path = File::Spec->rel2abs(__FILE__);
$dir = dirname $path;
print "$path\n$dir\n";
__FILE__ に替えて $0 を使う方法もある。それらに直接フルパスが格納されるかは処理系依存の模様。
Cwd モジュールなどを使った他のやり方も多く存在。
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 /? で確認することもできる。
0 件のコメント:
コメントを投稿