2014-02-22 90 views
0

下面的腳本是用Photoshop的腳本列表器記錄的。它在文檔中搜索單詞「Sun」並用「Moon」替換它。Photoshop腳本 - 從外部文件中獲取文字

我的問題:如何從外部.txt文件中獲取替換詞「Moon」?

// ======================================================= 
var id1 = charIDToTypeID("Opn "); 
var desc1 = new ActionDescriptor(); 
var id2 = charIDToTypeID("null"); 
desc1.putPath(id2, new File("C:\\document.psd")); 
executeAction(id1, desc1, DialogModes.NO); 

// ======================================================= 
var id3 = stringIDToTypeID("replace"); 
var desc2 = new ActionDescriptor(); 
var id4 = charIDToTypeID("null"); 
    var ref1 = new ActionReference(); 
    var id5 = charIDToTypeID("Prpr"); 
    var id6 = stringIDToTypeID("replace"); 
    ref1.putProperty(id5, id6); 
    var id7 = charIDToTypeID("TxLr"); 
    var id8 = charIDToTypeID("Ordn"); 
    var id9 = charIDToTypeID("Al "); 
    ref1.putEnumerated(id7, id8, id9); 
desc2.putReference(id4, ref1); 
var id10 = charIDToTypeID("Usng"); 
    var desc3 = new ActionDescriptor(); 
    var id11 = stringIDToTypeID("find"); 
    desc3.putString(id11, "Sun"); 
    var id12 = stringIDToTypeID("replace"); 
    desc3.putString(id12, "Moon"); 
    var id13 = stringIDToTypeID("checkAll"); 
    desc3.putBoolean(id13, true); 
    var id14 = charIDToTypeID("Fwd "); 
    desc3.putBoolean(id14, false); 
    var id15 = stringIDToTypeID("caseSensitive"); 
    desc3.putBoolean(id15, true); 
    var id16 = stringIDToTypeID("wholeWord"); 
    desc3.putBoolean(id16, false); 
    var id17 = stringIDToTypeID("findReplace"); 
    desc2.putObject(id10, id17, desc3); 
    executeAction(id3, desc2, DialogModes.NO); 

回答

1

看看我對這個問題的回答。 How does one load some variables at runtime in Photoshop Script?。如果後面的單詞是文檔中的唯一單詞,那麼變量'str'將包含您的單詞。還請查看我的答案:Find and replace text in multiple Photoshop files?它提供了一種不依賴於混亂的腳本偵聽器代碼的查找/替換方法。

在最低限度以下添加到代碼的頂部您提供:

var file = new File(/c/folder/yourfile.txt);  
file.open("r"); 
var str = file.read(); 

,然後更換線

desc3.putString(id12, "Moon"); 

desc3.putString(id12, str); 

如果那並不是」工作你需要發佈你的更新代碼,以便我可以看到你做錯了什麼。

+0

謝謝你的回覆和你的時間! Unfortunatley,我只是沒有使它工作的技能。經過很多猜測,沒有結果。對我來說很清楚,我應該在這部分工作:desc3.putString(id12,「Moon」);.並添加一些file.open(「r」);和file.read();.嘗試不同的變化,沒有運氣... – Malasorte

+0

看到我的編輯,希望他們會清除它多一點。 –

+0

謝謝!它效果很好!還有一個問題:如果外部文本文件包含多個段落,而不僅僅是一個單詞,該腳本將獲取所有文本,但完全忽略段落中間(段落之間的空白行)。我意識到,因爲腳本使用Photoshop內置的搜索/替換功能,它可能有限制。但是,有沒有辦法讓它導入段落分隔符? – Malasorte