2012-07-25 87 views
2

我正在努力在Alfresco中编写脚本来重命名文件扩展名。在Alfresco脚本中重命名文件

该文件被保存为filename.bin。我正在使用内容规则说明文件名等于*bin时重命名为*pdf

我正在努力与脚本一点,并会感谢任何帮助。

我的脚本如下:

// change the name of this document 
document.properties.name = document.properties.name+".pdf"; 
// add a new property string 
document.properties["cm:locale"] = mylocalenode; 
// save the property modifications 
document.save(); 

,但似乎并没有得到我的任何地方。

+0

请不要把“但似乎不让我到任何地方”。这不会让我们任何地方:)任何可以显示错误信息吗?它似乎没有做任何事情?你有没有检查你的日志? – luiscolorado 2012-07-25 21:13:48

回答

6

所写的脚本会将一个名为“filename.bin”的文档重命名为“filename.bin.pdf”。然后,它会设置一个名为“cm:locale”的属性等于mylocalenode的值,该值在此代码段中未定义为 。我不知道你要用cm:locale去做什么,所以我会忽略它并给你一个脚本,它将搜索名为filename.bin的文档并更改它的名字。

如果您想更新文件夹中的子项,您应该可以查看Alfresco JavaScript API以了解如何修改下面的代码段来执行此操作。

var results = search.luceneSearch("@cm\\:name:filename.bin"); 
var doc = results[0]; // assumes there is only one result, which may not be what you want 
var oldName = doc.properties.name; 
var newName = oldName.replace('.bin', '.pdf'); 
doc.properties.name = newName; 
doc.save(); 
+0

非常感谢Jeff – user1552474 2012-07-26 08:50:43

+1

您应该使用doc.name = newName;因为它还会更改在Alfresco中的父级关系中的内部使用的childQNamePath(调用FileFolderService.rename())。只要设置属性名称就可能导致不一致的行为。这是ScriptNode API的一个奇怪的怪癖。 – Florian 2016-01-29 11:44:03

0

增加更多的在这一点,因为你正在使用content-rule。有没有必要使用Lucene/Solr的服务。我们可以直接访问文档对象来搜索文档,它指的稿件上正在执行的规则。

所以代码如下所示。

var oldName = document.properties.name; 
var newName = oldName.replace('.bin', '.pdf'); 
document.properties.name = newName; 
document.save();