*[kindle]kindle unpackをGUI版からCUI版に切替

以前文字コードの関係でGUI版を使っていたkindle unpack
https://nakapon.hatenablog.com/entry/20180716/1531708868

cygwinをインストールしたことによりCUI版に切替
例によってPPxから起動できるようにスクリプト作成

//!*script
// kindleunpack Ver 1.0
// 使用プログラム cygwin kindleunpack.py
// ============================================================
// 変数宣言
var FList		= '';	// PPxレスポンスファイル名
var iExt	= '';	// 入力ファイル拡張子
var iFile	= '';	// 入力ファイル名フルパス
var LibDir	= '/cygdrive/C/Program Files (x86)/KindleUnpack-master/lib';	// kindleunpack Libディレクトリ
var command	= '';	// PPxコマンドワーク
var WSHObj	= '';	// wshシェル
var RetCD	= '';	// 戻り値
var StmObj1	= '';	// スクリプト出力ワーク(BOM付き)
var StmObj2	= '';	// スクリプト出力ワーク(BOMなし)

// 処理対象ファイル名を取得しcygwin用に加工
iFile = PPx.Extract("%FDN%\\%R");
iFile = iFile.replace(/:/g,'');			// :を取る
iFile = iFile.replace(/\\/g,'\/');		// \を/に置換
iFile = '/cygdrive/' + iFile;			// Prifix付与

// 作業用ファイル名を取得するためレスポンスファイル作成し即削除
FList = PPx.Extract('%a*FDN');
PPx.Execute('*delete "' + FList + '"');

// スクリプトファイル作成
StmObj1         = new ActiveXObject('ADODB.Stream');
StmObj2         = new ActiveXObject('ADODB.Stream');
StmObj1.type    = 2;
StmObj1.charset = 'utf-8';
StmObj1.LineSeparator = 10; // adLF
StmObj1.Open();
StmObj1.WriteText('#!/bin/bash',1);
StmObj1.WriteText('cd "' + LibDir + '"',1);
StmObj1.WriteText('python kindleunpack.py -i --epub_version=3 "' + iFile + '"',1);
StmObj1.WriteText('exit 0',1);
StmObj1.SaveToFile(FList,2);	// 1:新規作成(あるとエラー) 2:ある場合は上書き
StmObj1.Close();

// BOM除去
StmObj1.Type = 1;
StmObj2.Type = 1;
StmObj1.Open();
StmObj2.Open();
StmObj1.LoadFromFile(FList);
StmObj1.Position = 3;
StmObj2.Write(StmObj1.Read());
StmObj1.Close();
StmObj2.SaveToFile(FList,2);  // 1:新規作成(あるとエラー) 2:ある場合は上書き
StmObj2.Close();

// スクリプトファイル名をcygwin用に加工
FList = FList.replace(/:/g,'');		// :を取る
FList = FList.replace(/\\/g,'\/');	// \を/に置換
FList = '/cygdrive/' + FList;		// Prifix付与

// bashキックコマンド生成
command = 'bash --login -i -c '
		+ ' "' + FList + '"';
// PPx.Echo(command);

// bash呼出
WSHObj    = new ActiveXObject('WScript.Shell');
RetCD = WSHObj.Run(command,1,true);  // true:終了待機する
WSHObj    = '';

// 後処理
PPx.Quit();