@set @EXIT_SUCCESS = 0
@set @EXIT_FAILURE = 1
var Opt = new struct_options();
main();
exit();
function echo(text)
{
Script.Echo(text);
}
function exit(exit_code)
{
Script.Quit(exit_code);
}
function print_usage(error_msg)
{
echo(Script.ScriptName);
echo(" preset [/selall] [/suspend]");
echo();
echo(" preset 連結効果のプリセット名。");
echo(" /selall ファイルの全範囲を選択状態にする。");
echo(" /suspend 終了後 OS を待機状態にする。");
echo();
}
function struct_options()
{
this.SelAll = false;
this.Suspend = false;
}
function read_options()
{
var args = Script.Arguments;
if (args.Named.Exists("?")) {
print_usage();
exit(@EXIT_FAILURE);
}
var e, key;
for (e = new Enumerator(args.Named); !e.atEnd(); e.moveNext()) {
key = e.item().toLowerCase();
if (key == "selall")
Opt.SelAll = true;
else if (key == "suspend")
Opt.Suspend = true;
else {
echo("エラー: 不明なオプション " + e.item());
exit(@EXIT_FAILURE);
}
}
if (args.Unnamed.length == 0) {
echo("エラー: プリセット名が指定されていません。");
exit(@EXIT_FAILURE);
}
else if (args.Unnamed.length > 1) {
echo("エラー: プリセット名は一つだけしか指定できません。");
exit(@EXIT_FAILURE);
}
Opt.PresetName = args.Unnamed(0);
}
function main()
{
read_options();
if (Opt.Suspend)
Application.System.SetSuspendState(false, true, false);
var e, doc;
for (e = new Enumerator(Application.Documents); !e.atEnd(); e.moveNext()) {
doc = e.item();
Script.Echo(doc.Title);
if (Opt.SelAll) {
doc.SelectionFrom = 0;
doc.SelectionTo = doc.Length;
}
doc.EffectChain(Opt.PresetName);
}
exit(@EXIT_SUCCESS);
}