連番付き変数をファイルに書き出し
%*script(%0\Script\SeqUserData2file.js,hoge)
とすると、連番付き変数(この例なら_User:hoge1 _User:hoge2 _User:hoge3 …)を一時ファイルに一行ずつ書き込み、そのパスを返す。また、
*script %0\Script\SeqUserData2file.js,hoge,%0fuga.txt
として、指定したファイル(この場合はfuga.txt)に書き込むこともできる。
連番付き変数の中身がファイルパスなら、
*ppc %*script(%0\Script\SeqUserData2file.js,hoge)
とすれば、お気に入りのように使うことができる。
SeqUserData2file.js
//!*script // 連番付き変数をファイルに保存。そのファイルのパスを返す // テンポラリファイルに保存してそのパスを利用したい場合は // %*script(%0\Script\SeqUserData2file.js,hoge) のように。特定のファイルに保存したい場合は // *script %0\Script\SeqUserData2file.js,hoge,fuga.txt とする // 第一引数 : ユーザデータ(_User:hoge1 _User:hoge2 _User:hoge3...のhoge) // 第ニ引数 :保存先のファイルパス(省略可能。その場合はテンポラリファイルに保存) // 引数がなければ終了 if (PPx.Arguments.Length < 1){ PPx.SetPopLineMessage("引数が正しくありません。"); PPx.Quit(); } // テンポラリファイル名の作成 function getTempFile() { var fso = new ActiveXObject("Scripting.FileSystemObject"); var tDir = fso.GetSpecialFolder(2); var tFile = fso.GetTempName(); return tDir + "\\" + tFile; } var cmd = PPx.Arguments.Item(0); var stream = new ActiveXObject("ADODB.Stream"); stream.type = 2; stream.charset = 'UNICODE'; stream.open(); stream.WriteText(';ListFile',1); // 登録済みパス一覧を表示 for (var i = 0; true; i++) { var str = PPx.Extract("%*getcust\(_User:"+cmd+i+"\)"); if (str){ stream.WriteText(str,1); } else { break; } } // 第ニ引数(保存先のファイルパス)があればそこに、なければテンポラリファイルに保存 var filepath; if (PPx.Arguments.Length < 2){ filepath = getTempFile(); } else { filepath = PPx.Arguments.Item(1); } stream.saveToFile(filepath,2); stream.close(); PPx.Result = filepath;
連番付き変数をファイルから読み込み
*script %0\Script\file2SeqUserData.js,hoge,%0fuga.txt
とすると、fuga.txtの内容を一行ずつ読み込み、連番付き変数(この例なら_User:hoge1 _User:hoge2 _User:hoge3 …)にセットする。
file2SeqUserData.js
//!*script // テキストファイルの内容を連番付き変数にセットする // 第一引数:ユーザーデータユーザデータ(_User:hoge1 _User:hoge2 _User:hoge3...のhoge) // 第二引数:テキストファイルのパス // *script %0\Script\file2SeqUserData.js,hoge,%0fuga.txt のようにして使う // 引数がなければ終了 if (PPx.Arguments.Length < 2){ PPx.SetPopLineMessage("引数が正しくありません。"); PPx.Quit(-1); } var s = new ActiveXObject('ADODB.Stream'); var cmd = PPx.Arguments.Item(0); var fn = PPx.Arguments.Item(1); // エイリアスをリセット for (var i = 0; i < 20; i++) { PPx.Execute("*setcust _User:-|"+cmd+i+" = "); } // ファイルを読み取り s.type = 2; s.charset = 'UNICODE'; s.open(); s.loadFromFile(fn); var i = 0; // エイリアスを順次セット while(!s.EOS){ line = s.readText(-2); if (line != "" && line != ";ListFile") { PPx.Execute("*setcust _User:"+cmd+i+" = "+line); i++; } } s.close();
0 件のコメント:
コメントを投稿