2012年12月06日

EmEditor・ファイル名取得マクロまとめ

 マクロについてのまとめはこちらLink



EmEditorでファイル名取得と正規表現」の記事で、ファイル名を拡張子無しで取得する方法として、文書を一つ立ち上げて編集などをやっていたが、Javascriptのコマンドなどを使えばもっと簡単に済む。

 その修正と共に、ファイル名を取得する書式をまとめてみた。

 ファイル名を取得する方法として、EmEditorのマクロで用意されているコマンドは次の通り。
// パス名を取得
PassName = document.Path;
// ファイル名を取得
FileName = document.Name;
// フルパスファイル名をクリップボードにコピー
document.CopyFullName();
// パス名をクリップボードにコピー
document.CopyPath();
 これを利用して、ファイル名を変数として取得・クリップボードにコピーする方法は、次のようになる。

 ファイル名を変数として取得する方法。
// 編集文書のファイル名取得マクロ
// 貼付コマンド定義
function Write(Word){
document.selection.Text = Word + "\n";
}
// フルパスファイル名
FullFileName = document.Path + "\\" + document.Name;
Write(FullFileName);
// ドライブ名
DriveName = document.Path.replace(/\\.*$/ , "");
Write(DriveName);
// パス名
PassName = document.Path;
Write(PassName);
// ドライブ名を省いたパス名
NotDrivePassName = document.Path.replace(/^[^\\]*\\/ , "");
Write(NotDrivePassName);
// ファイル名
FileName = document.Name;
Write(FileName);
// 拡張子無しファイル名
NotExtName = document.Name.replace(/\.[^\.]*$/ , "");
Write(NotExtName);
// 拡張子名
ExtName = document.Name.replace(/^.*\./ , "");
Write(ExtName);

 ファイル名をクリップボードにコピーする方法。
// 編集文書のファイル名コピーマクロ
// 貼付コマンド定義
function Write(){
document.selection.Paste(eeCopyUnicode);
document.selection.NewLine(1);
}
// フルパスファイル名コピー
document.CopyFullName();
Write();
// ドライブ名コピー
clipboardData.setData("Text"
, document.Path.replace(/\\.*$/ , ""));
Write();
// パス名コピー
document.CopyPath();
Write();
// ドライブ名を省いたパス名コピー
clipboardData.setData("Text"
, document.Path.replace(/^[^\\]*\\/ , ""));
Write();
// ファイル名コピー
clipboardData.setData("Text", document.Name);
Write();
// 拡張子無しファイル名コピー
clipboardData.setData("Text"
, document.Name.replace(/\.[^\.]*$/ , ""));
Write();
// 拡張子名コピー
clipboardData.setData("Text"
, document.Name.replace(/^.*\./ , ""));
Write();

 この2つのマクロどちらも、
「C:\Users\Tsukasa\Documents\Test.txt」
 というファイルを開いている状態で実行すると、
C:\Users\Tsukasa\Documents\Test.txt
C:
C:\Users\Tsukasa\Documents
Users\Tsukasa\Documents
Test.txt
Test
txt
 と書き込まれる。

 また、クリップボードと変数に関するマクロをメモ書き。
// 選択範囲を変数で取得
str = document.selection.Text;
// 選択範囲をクリップボードにコピー
document.selection.Copy(eeCopyUnicode);
// 選択範囲をカットしてクリップボードにコピー
document.selection.Cut();
// クリップボード→変数
sData = clipboardData.getData("Text");
// 変数→クリップボード
clipboardData.setData("Text" , sData);
// クリップボードクリア
clipboardData.clearData();

 しかしこの辺、ヘルプやある程度のネット検索で見つけただけなので、実はまだ方法があるかも知れない。
 その時はまた修正予定。




posted by 司隆 at 11:18 | Comment(0) | Computer
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

×

この広告は180日以上新しい記事の投稿がないブログに表示されております。