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