「文字列中のパス起動」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
MSY-07 (トーク | 投稿記録)
<source>タグを<syntaxhighlight>タグに置き換える
MSY-07 (トーク | 投稿記録)
句読点の修正
1行目: 1行目:
文字列中のパスを直接開きます.
文字列中のパスを直接開きます。


exe で起動するアプリケーションを指定可能です.
exe で起動するアプリケーションを指定可能です。
省略時は関連づけられているアプリケーションで開きます.
省略時は関連づけられているアプリケーションで開きます。


base で相対パスのベースディレクトリを指定可能です.
base で相対パスのベースディレクトリを指定可能です。
省略時は開いているテキストのディレクトリになります.
省略時は開いているテキストのディレクトリになります。


'''2012/10/12 パス検索に不具合があったので修正'''
'''2012/10/12 パス検索に不具合があったので修正'''
12行目: 12行目:
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// 文字列中のパス起動
// 文字列中のパス起動
// 1) 絶対パス,相対パスの指定が可能
// 1) 絶対パス、相対パスの指定が可能
//  => 「:」が含まれる場合,絶対パスとする
//  => 「:」が含まれる場合、絶対パスとする
//  => 相対パスのベースパスは base で指定(省略時は開いているテキストのディレクトリ)
//  => 相対パスのベースパスは base で指定(省略時は開いているテキストのディレクトリ)
//  ※ ネットワークパスには非対応
//  ※ ネットワークパスには非対応
// 2) 文字列選択中はその文字列をファイルパスとして開く
// 2) 文字列選択中はその文字列をファイルパスとして開く
// 3) 文字列非選択時は,カーソル位置を中心としてパス検索して起動
// 3) 文字列非選択時は、カーソル位置を中心としてパス検索して起動
//  => 「"」「<」「>」で囲われている文字列をパスとして認識(空白認識のため)
//  => 「"」「<」「>」で囲われている文字列をパスとして認識(空白認識のため)
//  例:"img\a.jpg" <C:\a.jpg>
//  例:"img\a.jpg" <C:\a.jpg>
25行目: 25行目:
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------


var exe = '';  // 起動exe名.省略時は関連づけで開く.
var exe = '';  // 起動exe名。省略時は関連づけで開く。
var base = '';  // 相対パスのベース.省略時は開いているテキストのディレクトリがベース.
var base = '';  // 相対パスのベース。省略時は開いているテキストのディレクトリがベース。


var fso = new ActiveXObject('Scripting.FileSystemObject');
var fso = new ActiveXObject('Scripting.FileSystemObject');
61行目: 61行目:
if ($Exist(p)) {
if ($Exist(p)) {
   $Run(p);
   $Run(p);
   $Exit('"'+p+'"を開きました.');
   $Exit('"'+p+'"を開きました。');
} else {
} else {
   $Exit('"'+p+'"が見つかりません.');
   $Exit('"'+p+'"が見つかりません。');
}
}
</syntaxhighlight>
</syntaxhighlight>

2023年5月17日 (水) 17:49時点における版

文字列中のパスを直接開きます。

exe で起動するアプリケーションを指定可能です。 省略時は関連づけられているアプリケーションで開きます。

base で相対パスのベースディレクトリを指定可能です。 省略時は開いているテキストのディレクトリになります。

2012/10/12 パス検索に不具合があったので修正

// -----------------------------------------------------------------------------
// 文字列中のパス起動
// 1) 絶対パス、相対パスの指定が可能
//   => 「:」が含まれる場合、絶対パスとする
//   => 相対パスのベースパスは base で指定(省略時は開いているテキストのディレクトリ)
//   ※ ネットワークパスには非対応
// 2) 文字列選択中はその文字列をファイルパスとして開く
// 3) 文字列非選択時は、カーソル位置を中心としてパス検索して起動
//   => 「"」「<」「>」で囲われている文字列をパスとして認識(空白認識のため)
//   例:"img\a.jpg" <C:\a.jpg>
//
// Copyright (c) ks. All Rights Reserved.
// www:    http://merysmacro.seesaa.net/
// -----------------------------------------------------------------------------

var exe = '';   // 起動exe名。省略時は関連づけで開く。
var base = '';  // 相対パスのベース。省略時は開いているテキストのディレクトリがベース。

var fso = new ActiveXObject('Scripting.FileSystemObject');
var shell = new ActiveXObject('Wscript.Shell');
var $Path = function(a, b){return fso.BuildPath(a,b)};
var $GetP = function(p){return fso.GetParentFolderName(p)};
var $Exist = function(p){return fso.FileExists(p)};
var $Run = function(p){if(exe){shell.Run(exe+' "'+p+'"')}else{shell.Run('"'+p+'"')}};
var $Exit = function(s){Status=s; Quit()};
var doc = Document;
var sel = doc.Selection;

var p = '';  // ファイルパス
// 文字列選択中はそれをパスとして認識
if (!sel.IsEmpty) {
  p = sel.Text;
} else {
  // 文字列非選択時はパスを探索
  var x = sel.GetActivePointX(mePosLogical) - 1;
  var s = doc.GetLine(sel.GetActivePointY(mePosLogical), 0).replace('\n', '');
  var begin = s.substring(0, x).replace(/["<>]/g, '|').lastIndexOf('|');
  begin = (begin < 0) ? 0 : (begin + 1);
  var end = s.substring(x).search(/["<>\|]/);
  end = (end < 0) ? s.length : (x + end);
  p = s.substring(begin, end);
}

// 相対パスの場合は補完
if (p.indexOf(':') <= 0) {
  p = $Path(base ? base : $GetP(doc.FullName), p);
}

// ファイルの有無を確認して起動
if ($Exist(p)) {
  $Run(p);
  $Exit('"'+p+'"を開きました。');
} else {
  $Exit('"'+p+'"が見つかりません。');
}
スポンサーリンク