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)
var psdFileList = psdFolderObj.getFiles();
ここを
var psdFileList = psdFolderObj.getFiles("E_*.eps");
に変えてしまえば、
E_●●●.epsしか拾わないような気が…
[10891] dot (2010/11/11 Thu 10:46)
えっと、ぱっと見た目で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)
2名の方ありがとうございます。
大変助かります。
検証次第、結果を書きこまさせていただきます。
[10899] スクリプト初心者 (2010/11/11 Thu 15:40)