DTP駆け込み寺
  1. [10890] イラストレーターCS3スクリプト スクリプト初心者 2010/11/10 21:52
    1. [10891] Re: イラストレーターCS3スクリプト dot 2010/11/11 10:46
    2. [10895] Re: イラストレーターCS3スクリプト hoge 2010/11/11 13:12
      1. [10899] Re^2: イラストレーターCS3スクリプト スクリプト初心者 2010/11/11 15:40

[ 返信 ]

イラストレーターCS3スクリプト

WindowsイラストレーターCS3で以下のスクリプトで、
epsのファイルを処理していましたが、
E_●●●.eps
のようにファイル名の頭にE_がつくepsファイルだけを処理する必要があります。
どうやれば良いか、詳しい方いらっしゃいましたらご教授願います。

psdFolderObj = Folder.selectDialog("Illustrator epsがあるフォルダを選択してください。サブフォルダも処理されます");
if (psdFolderObj){
my_main_fnc(psdFolderObj);
}
function my_main_fnc(psdFolderObj){
var psdFileList = psdFolderObj.getFiles();
for (var i=0; i< psdFileList.length; i++) {
var fileObj = psdFileList[i];
if(fileObj.name.indexOf(".") < 0){
//もう一度自分自身の関数を呼び出す。
my_main_fnc(fileObj);
}else if(fileObj.name.indexOf(".eps") > 0){
psd_fnc(fileObj);

[10890] スクリプト初心者 (2010/11/10 Wed 21:52)

[ 返信 ]


Re: イラストレーターCS3スクリプト

var psdFileList = psdFolderObj.getFiles();

ここを

var psdFileList = psdFolderObj.getFiles("E_*.eps");

に変えてしまえば、
E_●●●.epsしか拾わないような気が…

[10891] dot (2010/11/11 Thu 10:46)

[ 返信 ]


Re: イラストレーターCS3スクリプト

えっと、ぱっと見た目でresします。
検証していないので、検証はしてください。

> if(fileObj.name.indexOf(".") < 0){
> //もう一度自分自身の関数を呼び出す。
> my_main_fnc(fileObj);
> }else if(fileObj.name.indexOf(".eps") > 0){
> psd_fnc(fileObj);

ここの部分ですが、

var fname=fileObj.name;
if(fname.match(^E_) && fname.match(.eps$)){
psd_fnc(fileObj);
}
でいいんじゃないですかね?
「E_」で始まり「.eps」で終わるファイル名なら、
psd_fnc(fileObj)を実行します。
(matchは、文字列を返すので、本当ならTrue、Falseを返すtestを使ったほうが好ましいですが、testを使ったことが余り無いので。)

indexofは、場所を返すので、例えば[hoge.epsz][hoge.eps.xls]でも、元のソースだと、>0で真となり通っちゃいます。

あと、
> if(fileObj.name.indexOf(".") < 0){
> //もう一度自分自身の関数を呼び出す。
> my_main_fnc(fileObj);
の部分は、.を含まないファイルがあったら、もう一度自分自身を呼び出してますが、これ、無限ループになりませんか?検証してちゃんと動いてますか?動いてるんなら俺の知識不足と言うことでゴメンなさい。

あと、{と}の数は揃いますよ。サンプルは}が抜けてますね。

[10895] hoge (2010/11/11 Thu 13:12)

[ 返信 ]


Re^2: イラストレーターCS3スクリプト

2名の方ありがとうございます。
大変助かります。
検証次第、結果を書きこまさせていただきます。

[10899] スクリプト初心者 (2010/11/11 Thu 15:40)