以前文字コードの関係で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();