プログラムの起動を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();