φ(.. ) 備忘録
   
  

2021年9月24日金曜日

Windows 10の操作をJScriptで拡張する

Windows 10の標準で搭載されているスクリプト(JScript)でWindows10の操作を拡張し、もっと便利に使う。

スクリプト言語をJScriptにしたのは、とくにツール等を追加することなく使用できる点や、もともとjavascriptを趣味で書いたことがあり、言語仕様がある程度わかるため。


■『送る』メニューに『パスをコピー』を追加する。

マウス右クリックのメニューにマウスで選択したファイルやフォルダの絶対パスをクリップボードにコピーする機能を追加する。

まずは、スクリプト(パスをコピー.js)を適当なフォルダに作成。スクリプトの内容は以下。

var args = WScript.Arguments;
var str=""
for(var i=0;i<args.length;i++){
  str+=args.Unnamed(i)+"\n";
}
var clip = WScript.CreateObject('WScript.Shell').Exec('clip');
clip.StdIn.Write(str);
clip.StdIn.Close();
このスクリプトのショートカットを作成し、『shell:sento』フォルダに配置。
使い方はパスをコピーしたいファイルやフォルダを選択(複数可)し、送るメニューのパスをコピーを選択。

クリップボードにパスがコピーされるので、Ctrl+vで貼り付け。すると、以下のようにファイルの絶対パスを張り付けることができる。
チャット等で、相手に共有ファイルの在りかを伝えるときとかに便利。

■クリップボードの内容をソートする。
エクセルとかのデータを一旦クリップボードにコピーしたあと、スクリプトを起動することで、クリップボード内でデータをソートする。
まずは、スクリプト(クリップボードをソート.js)を適当なフォルダに作成。スクリプトの内容は以下。
var clip = WScript.CreateObject("htmlfile").parentWindow.clipboardData;
var str=clip.getData("text");
var tbl=str.split("\n");
tbl.sort();
var clip = WScript.CreateObject('WScript.Shell').Exec('clip');
clip.StdIn.Write(tbl.join("\n"));
clip.StdIn.Close();
ソートしたいデータをクリップボードにコピー。
先ほど作成したスクリプト(クリップボードをソート.js)を「開く」またはダブルクリック。

Ctrl+vでソート済みのデータを張り付けることができる。
エクセルだとあまり活用する機会はないけれど、テキストデータを扱う場合には結構便利。

■クリップボードの内容をユニークソートする。
エクセルとかのデータを一旦クリップボードにコピーしたあと、スクリプトを起動することで、クリップボード内でデータをユニークソートする。
まずは、スクリプト(クリップボードをuniqソート.js)を適当なフォルダに作成。スクリプトの内容は以下。
var clip = WScript.CreateObject("htmlfile").parentWindow.clipboardData;
var str=clip.getData("text");
var tbl=str.split("\n");
var utbl = new Array();
for(var i=0;i%lt;tbl.length;i++){
  utbl[tbl[i]]="";
}
var stbl=new Array();
for(key in utbl){
  stbl.push(key);  
}
stbl.sort();
var clip = WScript.CreateObject('WScript.Shell').Exec('clip');
clip.StdIn.Write(stbl.join("\n"));
clip.StdIn.Close();
ユニークソートしたいデータをクリップボードにコピー。
先ほど作成したスクリプト(クリップボードをuniqソート.js)を「開く」またはダブルクリック。
Ctrl+vでユニークソート済みのデータを張り付けることができる。
クリップボードのデータのうち、重複しているデータを排除し、ソートした結果を張り付けることが可能。これは結構便利でしばしば使う。


0 件のコメント :

コメントを投稿