「Script Module」の編集履歴(バックアップ)一覧はこちら
「Script Module」(2013/03/25 (月) 23:54:02) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*Paper Plane xUI Script Module
>WSH のように ActiveX Scripting Host を利用してスクリプトを実行する PPx Module の試作品です。PaperPlanexUI0.40+3以降用です。0.35~0.40+2でも制限付きで使用可能です。
&html(<div style="text-align:right">配布元:<a href="http://homepage1.nifty.com/toro/slwin4.html#ppxscr" title="TORO's Software library">TORO's Software library</a></div>)
*簡単な使いかたの説明
**セットアップ
>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
**マークした複数のファイルの拡張子でフィルタするスクリプト
[[マークした複数のファイルの拡張子でフィルタ>http://www6.atwiki.jp/ppx/pages/13.html#id_5c10cd5d]]
**選択ファイルの別名バックアップをその場で作るスクリプト
例えば 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
// 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.EntryNextMark == 0) break;
}
PPx.Quit();
以上をテキストエディタに貼り付け "batchRename.js" とでもして PPx ディレクトリに保存。
M_Ccr = {
外部エディタでまとめてリネーム = *script %0batchRename.js
}
**PPx から公開サーバーに FTP でファイルを上げるスクリプト
[[qftp4ppx2.js>http://www6.atwiki.jp/ppx/?cmd=upload&act=open&pageid=19&file=qftp4ppx2.js]]
-[[BASP21 DLL>http://www.hi-ho.ne.jp/babaq/basp21.html]] のインストールが必要です。
-FTPサーバーやパスワード、ローカルのディレクトリの設定などはスクリプトを直接編集します。
-参考:[[指向性メモ::2004-10-07(元になったWSHスクリプト)>http://ishikawa.arielworks.com/memo/2004/10/07/033013]]
&html(<div style="text-align:right"><del>配布元:Note @ Temporary-Depot</del><ins>閉鎖</ins></div>)
*参考サイト
>PPx Script は、WSH と同じように ActiveX Scripting Host を利用していますので、文法や組み込み関数等は、WSH とほぼ同じです。
とあるように、WSH ( Windows Script Host ) 関連の情報はそのまま応用できます。
-[[Windows Script Host>http://www.microsoft.com/japan/msdn/library/ja/script56/html/wsoriwindowsscripthost.asp]]
-[[Windows管理者のためのWindows Script Host入門>http://www.atmarkit.co.jp/fwin2k/operation/wsh03/wsh03_01.html]]
*Paper Plane xUI Script Module
>WSH のように ActiveX Scripting Host を利用してスクリプトを実行する PPx Module の試作品です。PaperPlanexUI0.40+3以降用です。0.35~0.40+2でも制限付きで使用可能です。
&html(<div style="text-align:right">配布元:<a href="http://homepage1.nifty.com/toro/slwin4.html#ppxscr" title="TORO's Software library">TORO's Software library</a></div>)
*簡単な使いかたの説明
**セットアップ
>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
**マークした複数のファイルの拡張子でフィルタするスクリプト
[[マークした複数のファイルの拡張子でフィルタ>http://www6.atwiki.jp/ppx/pages/13.html#id_5c10cd5d]]
**選択ファイルの別名バックアップをその場で作るスクリプト
例えば 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 でファイルを上げるスクリプト
[[qftp4ppx2.js>http://www6.atwiki.jp/ppx/?cmd=upload&act=open&pageid=19&file=qftp4ppx2.js]]
-[[BASP21 DLL>http://www.hi-ho.ne.jp/babaq/basp21.html]] のインストールが必要です。
-FTPサーバーやパスワード、ローカルのディレクトリの設定などはスクリプトを直接編集します。
-参考:[[指向性メモ::2004-10-07(元になったWSHスクリプト)>http://ishikawa.arielworks.com/memo/2004/10/07/033013]]
&html(<div style="text-align:right"><del>配布元:Note @ Temporary-Depot</del><ins>閉鎖</ins></div>)
*参考サイト
>PPx Script は、WSH と同じように ActiveX Scripting Host を利用していますので、文法や組み込み関数等は、WSH とほぼ同じです。
とあるように、WSH ( Windows Script Host ) 関連の情報はそのまま応用できます。
-[[Windows Script Host>http://www.microsoft.com/japan/msdn/library/ja/script56/html/wsoriwindowsscripthost.asp]]
-[[Windows管理者のためのWindows Script Host入門>http://www.atmarkit.co.jp/fwin2k/operation/wsh03/wsh03_01.html]]
表示オプション
横に並べて表示:
変化行の前後のみ表示: