|新しいページ|検索|ページ一覧|RSS|@ウィキご利用ガイド | 管理者にお問合せ
|ログイン|

Script Module

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

Paper Plane xUI Script Module

WSH のように ActiveX Scripting Host を利用してスクリプトを実行する PPx Module の試作品です。PaperPlanexUI0.40+3以降用です。0.35~0.40+2でも制限付きで使用可能です。

html plugin Error : このプラグインを使うにはこのページの編集権限を「管理者のみ」に設定してください。

簡単な使いかたの説明

セットアップ

PPXSCR.DLL を PPx(0.35以降) があるディレクトリ内に用意し、PPx 上で「*script スクリプトファイル名」を実行することでスクリプトを実行することができます。

実行方法

例えば PPx のディレクトリ(%0)に "hoge.vbs", "fuga.js" というスクリプトがあるとします。

キーボードに直接割り付ける

 KC_main = { ;例えば Shift + x に割り付ける
   \X , *script %0hoge.vbs
 }

ctrl + Enter のメニューから実行する

 M_Ccr   = {
   fuga を実行 = *script %0fuga.js
 }

上記の例はいずれも PPc からの実行ですが、その他のモジュールからでも実行できます。動作確認をする場合は付属の "sample.vbs" を実行してみるとよいでしょう。
詳しくは付属の "PPXSCR.TXT" を参照しましょう。

Tips

マークしたエントリーを全て処理する

VBScript で書く場合
 '!*script
 ' マークしたエントリの名前を順番に表示する
 
 If PPx.EntryFirstMark = 0 Then
   PPx.Echo "マークはありません"
 Else
   Do
     ' ここで個別の処理を行う
     PPx.Echo "エントリの名前:" & PPx.EntryName
     If PPx.EntryNextMark = 0 then exit do
   Loop
 End If

JavaScript で書く場合
 //!*script
 // マークしたエントリの名前を順番に表示する
 
 if (PPx.EntryFirstMark == 0){
   PPx.Echo('マークはありません');
 } else {
   while(true){
     // ここで個別の処理を行う
     PPx.Echo('エントリの名前:' + PPx.EntryName);
     if(PPx.EntryNextMark == 0) break;
   }
 }


Script

マークした複数のファイルの拡張子でフィルタするスクリプト


選択ファイルの別名バックアップをその場で作るスクリプト

例えば test.txt というファイルがあったら test_txt051012.bak というふうに日付のついたファイル名でその場にコピーします。

 //!*script
 // back up with date.
 // This script is in the public domain.
 
 var date = makeDate();
 
 if(PPx.EntryFirstMark == 0 && PPx.EntryName != null) PPx.EntryMark = 1;
 if(PPx.EntryFirstMark == 1){
   while(true){
     var dir = PPx.Extract('%1');
     var entryName = PPx.EntryName;
     var newName = entryName.replace(/^(.*)\.(\w+)$/i, '$1_$2');
     newName += date + '.bak';
     var fs = new ActiveXObject('Scripting.FileSystemObject');
     f = fs.GetFile(dir + '\\' + entryName);
     f.Copy(dir + '\\' + newName, true); // 上書き
     PPx.EntryMark = 0;
     if(PPx.EntryNextMark == 0) break;
   }
 }
 
 function makeDate(){
   /* make yymmdd string */
   var d = new Date();
   var year = d.getFullYear().toString().substr(2,2);
   var month = (d.getMonth() + 1).toString();
   if (month.length == 1 ) month = '0' + month;
   var day = d.getDate().toString();
   if (day.length == 1 ) day = '0' + day;
   return year + month + day;
 }

以上をテキストエディタに貼り付け "backupWithDate.js" とでもして PPx ディレクトリに保存。

 M_Ccr   = {
   日付付きバックアップ = *script %0backupWithDate.js
 }


選択ファイル名のリストを外部エディタで編集し、一気にリネームするスクリプト

実行すると、選択中エントリのレスポンスファイル(一行ごとにファイル名を書いたテキストファイル)を外部エディタで立ち上げます。そのファイルを編集し、上書き保存の後、エディタを終了すると編集内容の通りに一気にファイルをリネームします。
実行すると「Waiting...」というプロンプトが出てきますが、無視してください。スクリプトの終了後に自動的に消えます。

 //!*script
 // Version 1.29+3 以降用
 // This script is in the public domain.
 // PPc 用スクリプト。
 // 選択エントリーをテキストエディタで一気にリネーム。
 //
 // ===== 設定 =================================================
 // 使用するエディタのパスを設定。パス区切りは '\\'
 // 例 : var editor = 'C:\\Program Files\\sakura\\sakura.exe';
 // SDI のエディタじゃないと終了判定がうまく行かないかも。
 // 空にしておくと PPe で編集。
 var editor = 'D:\\home\\Toolz\\sakura\\sakuraW.exe';
 
 // ============================================================
 
 if(PPx.EntryFirstMark != 1){
   PPx.Echo('マークされたエントリがありません');
   PPx.Quit();
 }
 
 // マークしたファイルのリストを取得
 var listFile = PPx.Extract('%aFCN');
 if(editor && editor != ''){
   // 指定エディタで起動
   var command = '%Obsq \"' + editor + '\" \"' + listFile + '\"';
   PPx.Execute(command);
 }else{
   // 指定エディタが設定されていない場合は PPe で
   PPx.Execute('*edit \"' + listFile + '\"');
 }
 
 // ファイル操作
 var fso = new ActiveXObject('Scripting.FileSystemObject');
 // 編集したファイルを読む
 var newFileNames = [];
 if(fso.FileExists(listFile)){
   var f = fso.OpenTextFile(listFile, 1);
   while(! f.AtEndOfStream){
     newFileNames.push(f.ReadLine());
   }
   f.close();
 }else{
   PPx.Echo('リネームデータを取得できませんでした');
   PPx.Quit();
 }
 
 // エントリのリネーム
 var dir = PPx.Extract('%1%\\');
 for(var i = 0; true; i++){
   var oldName = dir + PPx.EntryName;
   var newName = dir + newFileNames[i];
   
    if ( newFileNames[i]
     && newName != oldName
     && fso.FileExists(oldName) 
     && (!fso.FileExists(newName))
   ){
     fso.GetFile(oldName).Move(newName);
   }else{
     if(newName != oldName){
       PPx.Echo(PPx.EntryName + ' のリネームに失敗しました。\n名前の重複などを確認してください\n'+newName+'\n'+oldName);
     }
   }
   PPx.EntryMark = 0;
   if(PPx.EntryFirstMark == 0) break;
 }
 PPx.Quit();


以上をテキストエディタに貼り付け "batchRename.js" とでもして PPx ディレクトリに保存。

 M_Ccr   = {
   外部エディタでまとめてリネーム = *script %0batchRename.js
 }

PPx から公開サーバーに FTP でファイルを上げるスクリプト


html plugin Error : このプラグインを使うにはこのページの編集権限を「管理者のみ」に設定してください。

参考サイト

PPx Script は、WSH と同じように ActiveX Scripting Host を利用していますので、文法や組み込み関数等は、WSH とほぼ同じです。

とあるように、WSH ( Windows Script Host ) 関連の情報はそのまま応用できます。