スクリプトからSusieプラグインを利用する

戻る

スクリプトからプラグインが利用できたら便利かも?
しかし、スクリプトから直接プラグインを扱うことはできません。
そこで、プラグインを管理するコンポーネントを作ってみました。

Susieプラグイン管理コンポーネント

cscriptを使えば、バッチファイルやコマンドラインからも呼び出せます。

>cscript ToBMP.vbs src.png dest.bmp


サンプル1

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


サンプル2

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);



戻る inserted by FC2 system