2014-09-04 127 views
0

首先讓我告訴你,我只有基本的編程經驗,但我幾乎是MaxScript(Autodesk 3ds max腳本語言)的專業人員。現在,我開始寫的Photoshop腳本基本上執行以下操作:Photoshop javascript遍歷文件夾層次結構向上

1)操縱開放PSD文檔以某種方式

2)保存該文件爲TIFF在特定相對的文件夾PSD文件的位置。

所以我們說的PSD文件在文件夾C /項目/後期製作/工作/ workingSubfolder

然後TIFF文件應在文件夾中C /項目/後期製作/導出/ exportSubfolder

重要的事情是:

  • 「工作」和「出口」的文件夾都在同一水平上
  • 有時候不存在「workingSubfolder」文件夾,有時 更多。不可預測。
  • 腳本需要複製「導出」文件夾中「工作」文件夾的文件夾結構,但顯然將TIFF保存在那裏而不是PSD。

我現在需要的是從PSD文件向上遍歷層次結構,直到找到名爲「export」的文件夾。然後進入該「導出」文件夾,在那裏複製「工作」文件夾內的結構,如果該結構不存在,然後在那裏保存與PSD文件具有相同名稱的TIF文件。

我在interwebs中發現了一個關於遍歷文件夾樹的遞歸向下的噸,但沒有向上。也許我在找錯?我覺得這對於任何像樣的程序員來說都是一個極其簡單的問題。

+0

穿越算法_DOWN_通常需要從文件系統中讀取數據 - 但既然你有一個現有路徑已經想去「上」在這裏,排在首位,這需要基本的字符串操作 - 在分割你的路徑'/ ',並以相反的順序遍歷該分割的結果,直到找到名爲'export'的路徑段。只有在那之後,你需要再次「下」 - 那時候你已經知道下面這些文件夾的名字了,所以這是檢查文件系統中是否已經存在,以及是否已經創建它們的問題。 – CBroe 2014-09-04 13:08:03

+0

但是,這不應該在任何時候都需要遞歸,因爲這裏只有一個「扁平的」一維數據結構 - 只是按照定義的順序有幾個路徑段。 – CBroe 2014-09-04 13:09:07

回答

0

像這樣的東西應該讓你開始......基本上它只是簡單地計算出什麼輸出路徑應該從當前文檔路徑進行一些戰略替換。如果您確實需要更多地使用文件系統對象,請參閱Photoshop安裝目錄中的「Javascript工具指南」。

var workingPath = app.activeDocument.path.toString(); 
var exportPath = workingPath.replace('working', 'export'); 
var filename = app.activeDocument.name.toString().replace('.psd', '.tif'); 
var folder = new Folder(exportPath); 

if (!folder.exists) 
    folder.create(); 

var options = new TiffSaveOptions; 
//set any options you need to here.... 

var exportFile = new File(exportPath + '/' + filename) 

app.activeDocument.saveAs(exportFile, options) 
+0

哦,我的天啊,太簡單了。我真的沒有想到,我可以用「出口」取代「工作」,它可以解決所有的麻煩。非常感謝:-) – 2014-09-04 15:27:46