クリエイター手抜きプロジェクト[380]Adobeアプリ CS3〜CC編 ファイルサイズをレポート/古籏一浩

投稿:  著者:  読了時間:9分(本文:約4,300文字)


今回は、指定したフォルダ内にあるファイルサイズの合計をレポートするスクリプトです。単にレポートするだけでなく、指定したファイルサイズより小さい場合、大きい場合、等しい場合などの条件をつけてレポートできます。条件を付けることで、100MB以上のファイルだけピックアップしてレポートする事ができます。

最初のスクリプトは指定したフォルダ(サブフォルダは計算しない)にあるファイルだけの合計サイズをレポートします。

なお、このスクリプトはPhotoshop、Illustrator、AfterEffects、Bridge、ESTKで動作します。Dreamweaver, Fireworksなど旧マクロメディア製品では動作しません。


// 指定したフォルダ内にあるファイルサイズと合計をレポート
(function (){
var checkFolder = Folder.selectDialog("ファイルサイズを調べるフォルダを選択してください");
if (!checkFolder){ return; } // キャンセルした場合は何もしない
var fileList = checkFolder.getFiles(); // 全てのファイルが対象
if (fileList.length < 1){
alert("フォルダにファイルがありません");
return;
}
var f = File.saveDialog("結果を保存するファイル名を指定してください");
if (!f){ return; }
var flag = f.open("w");
if (!flag){ return; }
var total = 0;
var total2 = 0;
for(var i=0; i<fileList.length; i++){
var _byte = fileList[i].length;
if (_byte){
total = total + _byte; // フォルダ内の合計サイズ
if (_byte > 0){ // ファイルサイズチェック
f.writeln(fileList[i].name+" ("+_byte+"バイト)");
total2 = total2 + _byte; // 対象ファイルだけの合計
}
}
}
f.writeln("合計バイト数:       "+total+"バイト");
f.writeln("対象ファイルの合計バイト数:"+total2+"バイト");
f.close();
})();

上記のスクリプトは、ファイルサイズが1バイト以上のものが対象です。ただし、CS3〜CS6では2GB以上のファイルは正しいサイズを取得できず、0バイトになってしまいます。

ファイルサイズが1024バイト=1Kバイトより大きいファイルだけをレポートす
る場合は、以下のようにします。

if (_byte > 0){ // ファイルサイズチェック
 ↓
if (_byte > 1023){ // ファイルサイズチェック

逆に1KB未満のファイルだけを対象にするには以下のようにします。

if (_byte > 0){ // ファイルサイズチェック
 ↓
if (_byte < 1024){ // ファイルサイズチェック

サブフォルダも対象にしたい場合は、以下のスクリプトになります。ファイルサイズの制約や変更箇所は、上記スクリプトと同じです。

// 指定したフォルダ・サブフォルダ内にあるファイルサイズをレポート
(function (){
var checkFolder = Folder.selectDialog("ファイルサイズを調べるフォルダを選択してください");
if (!checkFolder){ return; } // キャンセルした場合は何もしない
var fileList = getFilesX("*", checkFolder, { japanese: true }); // 全てのファイルが対象
if (fileList.length < 1){
alert("フォルダにファイルがありません");
return;
}
var f = File.saveDialog("結果を保存するファイル名を指定してください");
if (!f){ return; }
var flag = f.open("w");
if (!flag){ return; }
var total = 0;
var total2 = 0;
for(var i=0; i<fileList.length; i++){
var _byte = fileList[i].length;
if (_byte){
total = total + _byte; // フォルダ内の合計サイズ
if (_byte > 0){ // ファイルサイズチェック
f.writeln(fileList[i].nameJ+" ("+_byte+"バイト)");
total2 = total2 + _byte; // 対象ファイルだけの合計
}
}
}
f.writeln("合計バイト数:       "+total+"バイト");
f.writeln("対象ファイルの合計バイト数:"+total2+"バイト");
f.close();
})();
// サブフォルダ内にあるファイルも取得する
function getFilesX(fileTypes, basePath,options){
options = options || {};
if(!basePath){
basePath = Folder.selectDialog("フォルダを選択してください");
if (!basePath){ return; } // キャンセルされた場合は処理しない
}
var allList = [];
// パラメータが文字の場合
if (typeof(fileTypes) == "string"){
getFileList(new Folder(basePath), fileTypes);
return toJapanese(allList, options.japanese);
}
// パラメータが配列の場合
if (fileTypes.push){
for(var i=0; i<fileTypes.length; i++){
getFileList(new Folder(basePath), fileTypes[i]);
}
return toJapanese(allList, options.japanese);
}
function getFileList(currentFolder, fileType){
var fileList = currentFolder.getFiles(fileType);
var fileList2 = currentFolder.getFiles("*"); // Sub Folder
allList = allList.concat(fileList);
for(var i=0; i<fileList2.length; i++){
if (fileList2[i].getFiles){
if (fileList2[i].name.charAt(0) == "."){ continue; }
getFileList(fileList2[i], fileType); // フォルダがある限り繰り返し
}
}
}
// 日本語に変換(nameJ, fullNameJ)
function toJapanese(fileList, flag){
if (!flag){ return fileList; }
for(var i=0; i<fileList.length; i++){
fileList[i].nameJ = File.decode(fileList[i].name);
fileList[i].fullNameJ = File.decode(fileList[i].fullName);
}
return fileList;
}
}


【古籏一浩】openspc@alpha.ocn.ne.jp
< http://www.openspc2.org/ >

AdobeさんがバージョンをCS6からCCにしたのはいいけど、マイナーバージョンアップで機能が違っているので、ver CCで動きます、とはっきり言いにくくなってしまった。17.1から動きます、という具合にマイナーバージョン表記しないといけないのかなあ。

話は変わって農業(水田)の会議があった。杖をつき顔を紫色にしたお婆さんが出てきた(付添いあり)。40代は二人で後は全員ご老人。TPPあってもなくても、もうほとんど崩壊状態に近いかも。10年後にはお米は作れるかどうか分からない雰囲気。若者が10人や20人増えて農業に加わっても、人数不足でとても無理っぽい。

さらに話は変わって、JavaScript逆引きハンドブックが増刷になりました。どうもありがとうございます。

・JavaScript逆引きハンドブック【増刷中】
< http://www.amazon.co.jp/dp/4863541082 >

・D3.js例文辞典
< http://www.openspc2.org/reibun/D3.js/ >

・Dart例文辞典
< http://www.openspc2.org/reibun/Dart/ver1.1/ >

・Adobe CS2〜CS6,CC JavaScriptリファレンス&ライブラリ
< http://www.openspc2.org/reibun/AdobeJS/index.html >

・Adobe JavaScriptリファレンス(検索できないのはKindleのバグらしい)
< http://www.amazon.co.jp/dp/4844395955 >

・ハイビジョン映像素材集
< http://www.openspc2.org/HDTV/ >

・Nexus 7(アンドロイドタブレット)使い方辞典
< http://www.openspc2.org/reibun/Android/Nexus7/ >

・クリエイター手抜きプロジェクト
< http://www.openspc2.org/projectX/ >

・Adobe Illustrator CS3 + JavaScript 自動化サンプル集
< http://www.openspc2.org/book/PDF/Adobe_Illustrator_CS3_JavaScript_Book/ >
吉田印刷所の「印刷の泉」でも購入できるようになりました。