*[PPx]winrarを使ってのDVD-RAMへのバックアップスクリプト メモ

プログラムの起動をrunメソッドからexecメソッドに変更し
様子を見ていたが変な戻り値が返ってくることは無くなった模様

//!*script
// バックアップ圧縮ファイル作成 Ver 2.2
// DVD-RAM用に4000MBで分割圧縮
// ============================================================
// 変数宣言
var InFiles   = [];    // 入力ファイル名格納配列
var OutFiles  = [];    // 出力ファイル名格納配列
var i         = 0;     // 配列インデックス
var FListX    = '';    // PPxレスポンスファイル名
var FListT    = '';    // PPxレスポンスファイル名
var iName     = '';    // 入力ファイル名
var iExt      = '';    // 入力ファイル拡張子
var iDir      = '';    // 入力ファイルディレクトリ
var oDir      = '';    // 出力先ディレクトリ
var command   = '';    // PPxコマンドワーク
var RunProg   = '';    // 起動プログラム名フルパス
var SleepVBS  = '';    // WScript.Sleep汎用vbs
var StmObjX   = '';    // PPxレスポンスファイルオブジェクト
var StmObjT   = '';    // PPxレスポンスファイルオブジェクト
var WSHObj    = '';    // wshシェル
var execObj   = '';    // 起動プログラムオブジェクト

// 入出力ディレクトリ確定
iDir = PPx.Extract('%1%\\');
oDir = PPx.Extract('%"出力先パス"%ed%$2%\\');
if (oDir == '') {  //ESC押下チェック
   PPx.Quit();
}

// レスポンスファイル作成
FListX = PPx.Extract("%a*8FXN");  // ファイル名のみ
FListT = PPx.Extract("%a*8FTN");  // 拡張子

// streem設定
StmObjX = new ActiveXObject('ADODB.Stream');
StmObjT = new ActiveXObject('ADODB.Stream');
StmObjX.type = 2;
StmObjT.type = 2;
StmObjX.charset = 'utf-8';
StmObjT.charset = 'utf-8';
StmObjX.Open();
StmObjT.Open();
StmObjX.loadFromFile(FListX);
StmObjT.loadFromFile(FListT);

// 配列に格納
while (!StmObjX.EOS) {
   iName = StmObjX.readText('-2');
   iExt  = StmObjT.readText('-2');
   InFiles.push(' "'  + iDir + iName + iExt.replace(/(.+)/g,'.$1') + '"');
   OutFiles.push(' "' + oDir + iName + '.rar"')
}

// ストリームクローズ
StmObjX.Close();
StmObjT.Close();
StmObjX = '';
StmObjT = '';

MaxLoop = InFiles.length;  // 配列要素数保存
PPx.Execute('%K"@^END"');  // マークを外す

// 圧縮ループ処理
WSHObj    = new ActiveXObject('WScript.Shell');
RunProg   = PPx.Extract("%'Winrar'");
SleepVBS  = 'cscript ' + PPx.Extract('%0%\\')
          + 'script\\sleep.vbs ' + '500';  // 500ミリ秒
for (i=0; i < MaxLoop; i++) {
   command = RunProg
           + ' a'
           + ' -ibck'
           + ' -k'
           + ' -rr10p'
           + ' -v4000m'
//           + ' -m5'
           + ' -ep1'
           + ' -o+'
           + OutFiles[i]
           + InFiles[i];
   ExecObj = WSHObj.exec(command);
   while (ExecObj.Status == 0) {  // 処理終了監視
          WSHObj.Run(SleepVBS,0,true);
   }
   switch (ExecObj.ExitCode){    // 戻り値チェック
      case 0:           // エラーなしは続行
           break;
      case 255:         // ユーザーキャンセルは無条件中断
           PPx.Quit();
           break;
      default:
           command = '%"' + (PPx.ScriptName).replace(/^.+\\(.+$)/,'$1') + '"'
                   + '%:%QN"リターンコード=' + ExecObj.ExitCode
                   + ' 続行しますか?"';
           if (PPx.Execute(command) != 0) {
               PPx.Quit();
           }
           break;
   }
   ExecObj = '';
   PPx.Execute('*jumppath /update /savelocate');  // エントリリスト更新
}

// 後処理
WSHObj = '';
PPx.Quit();