スクリプトからプラグインが利用できたら便利かも?
しかし、スクリプトから直接プラグインを扱うことはできません。
そこで、プラグインを管理するコンポーネントを作ってみました。
cscriptを使えば、バッチファイルやコマンドラインからも呼び出せます。
>cscript ToBMP.vbs src.png dest.bmp
スクリプトからプラグインが利用できたら便利かも?
しかし、スクリプトから直接プラグインを扱うことはできません。
そこで、プラグインを管理するコンポーネントを作ってみました。
cscriptを使えば、バッチファイルやコマンドラインからも呼び出せます。
>cscript ToBMP.vbs src.png dest.bmp
WSH、VBスクリプトのサンプルです。
プラグインで画像ファイルを読み込み、BMPに変換します。
'画像をBMPに保存 ' >cscript ToBMP.vbs file [output] '//////////////////////////////////////////////////////// '引数のチェック If WScript.Arguments.UnNamed.Count = 0 Then WScript.Echo "スクリプトファイル上に、画像ファイルをドラッグ&ドロップしてください" WScript.Quit ElseIf WScript.Arguments.UnNamed.Count = 1 Then path = WScript.Arguments.UnNamed(0) Set fso = CreateObject("Scripting.FileSystemObject") destPath = fso.BuildPath(fso.GetParentFolderName(path), fso.GetBaseName(path) & ".bmp") Else 'コマンドラインなら、出力パスも指定できるように path = WScript.Arguments.UnNamed(0) destPath = WScript.Arguments.UnNamed(1) End If '展開用のプラグインを取得 Set manager = CreateObject("SpiMng.SpiManager") Set spi = manager.QuerySpiFromFile(path, 0) If spi.Version <> "00IN" Then WScript.Echo "未対応のファイル" WScript.Quit End If 'ファイルに保存 spi.GetPictureToFile path, 0, destPath
WSH、JScriptのサンプルです。
プラグインで圧縮ファイルを展開します。
// アーカイブの展開 // >cscript Unpack.vbs file [output directory] //////////////////////////////////////////////////////// // 引数のチェック var path, destPath; var fso = WScript.CreateObject("Scripting.FileSystemObject"); if (WScript.Arguments.UnNamed.Count == 0) { WScript.Echo("スクリプトファイル上に、書庫ファイルをドラッグ&ドロップしてください"); WScript.Quit(); } else if(WScript.Arguments.UnNamed.Count == 1) { path = WScript.Arguments.UnNamed(0); destPath = fso.GetParentFolderName(path); } else { //コマンドラインなら、出力フォルダも指定できるように path = WScript.Arguments.UnNamed(0); destPath = WScript.Arguments.UnNamed(1); if (!fso.FolderExists(destPath)) { WScript.Echo("出力先はフォルダを指定してください"); WScript.Quit(); } } // 展開用のプラグインを取得 var manager = WScript.CreateObject("SpiMng.SpiManager"); var spi = manager.QuerySpiFromFile(path, 0); if (spi.Version != "00AM") { WScript.Echo("未対応のファイル"); WScript.Quit(); } // 書庫内のファイルを列挙し、展開 var arcInfo = spi.GetArchiveInfo(path, 0); var buffer = ""; for (var i = 1;i <= arcInfo.Count;i++) { //ファイルに保存 buffer += arcInfo.Item(i).FileName + "\n"; spi.GetFileToFile(path, arcInfo.Item(i), fso.BuildPath(destPath, arcInfo.Item(i).FileName)); if (i > 100) { WScript.Echo("あまり多くのファイルを展開すると、時間がかかるので中断します"); break; } } WScript.Echo(buffer);