Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Photoshop脚本-从外部文件获取word_Javascript_Replace_Find_Photoshop - Fatal编程技术网

Javascript Photoshop脚本-从外部文件获取word

Javascript Photoshop脚本-从外部文件获取word,javascript,replace,find,photoshop,Javascript,Replace,Find,Photoshop,下面的脚本是用Photoshop的脚本列表器录制的。它在文档中搜索“Sun”一词,并将其替换为“Moon” 我的问题:如何从外部.txt文件中获取替换词“Moon” // ======================================================= var id1 = charIDToTypeID( "Opn " ); var desc1 = new ActionDescriptor(); var id2 = charIDToTypeID( "null" );

下面的脚本是用Photoshop的脚本列表器录制的。它在文档中搜索“Sun”一词,并将其替换为“Moon”

我的问题:如何从外部.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 );

看看我对这个问题的回答。如果您要查找的单词是文档中唯一的单词,那么变量“str”将包含您的单词。还可以在这里查看我的答案:它提供了一个查找/替换方法,不依赖于凌乱的脚本侦听器代码

至少在您提供的代码顶部添加以下内容:

var file = new File( /c/folder/yourfile.txt );       
file.open("r");
var str = file.read();
然后更换管路

desc3.putString( id12, "Moon" ); 


如果这不起作用,您需要发布更新后的代码,以便我能看到您做错了什么。

感谢您的回复和宝贵的时间!不幸的是,我只是没有足够的技能让它工作。经过多次猜测,没有结果。我很清楚我应该在这部分工作:desc3.putString(id12,“Moon”);。并添加一些文件;和file.read();。尝试了不同的变化,没有运气…谢谢!它工作得很好!还有一个问题:如果外部文本文件包含多个段落,而不是一个单词,脚本将获取所有文本,但完全忽略段落分隔符(段落之间的空行)。我意识到,由于脚本使用Photoshop内置的搜索/替换功能,它可能有局限性。但是,有没有办法让它导入段落中断?
desc3.putString( id12, str );