我需要运行这样的命令:
atlassian confluence --action addLabels --labels labelName --space nameOfSpace --title "title name"
有很多标题。该命令仅接受单个title
参数和参数。
我可以使用Ant任务自动执行此操作,该任务将标题列表作为输入,并将每个标题放在上面的命令中并运行它吗?
我想我可以使用replaceregexp将上面命令中的每个标题包装在我的列表中,并将整个内容放入bat文件中反复运行命令,但是不是更好的方法吗?
我已尝试以逗号分隔的标题列表和其他尝试在一个命令中运行列表,但它似乎一次只接受一个,而CLI的文档没有说明其他方面。
更新
我仍然很想知道如何完成上述工作,但我终于找到了一种方法,可以在一个命令中完成我需要的工作。也就是说,只需输入首页标题,即可为Confluence中的页面添加或删除给定标题的所有“子”页面的标签:
confluence --action runFromPageList --space "SpaceName" --title "Parent Page Name" --descendents --common "--action addLabels --labels "New-Label-To-Add" --title ""@title@"" --space "SpaceName""
这是使用Confluence命令行界面。缺少的技巧是使用-descendents
(不是--children
,这是在其他汇合命令中完成的方式)。
我一直在将所有子页面提取到列表中 - 这部分我知道该怎么做 - 并且认为我会从那里开始,但这样它就可以使用一个命令自动执行该过程。
更新II
正如我上面提到的,我找到了一种在某些情况下使用一个命令添加标签的方法,但后来我需要一种方法将标签添加到选定的页面标题列表(没有共同父项的页面)。所以我回到这里并使用其中一个答案来设计一种方法来添加标签,方法是使用for
循环.txt文件中的标题列表。这是我最终放入.bat文件的内容:
cmd /k for /F "usebackq delims=" %%A in (my.list.txt) DO (confluence --action addLabels --labels labelName --space spaceName --title "%%A")
有一个问题是标题名称中有空格,所以我必须添加"usebackq delims="
,我在答案#2 here.
答案 0 :(得分:1)
您可以使用apply在资源集合上运行命令,如下所示:
<project name="project" default="addLabels">
<!-- comma-separated list of titles -->
<property name="titles" value='foo,"bar baz",etc' />
<target name="addLabels">
<apply executable="atlassian" relative="true">
<arg value="confluence" />
<arg value="--action" />
<arg value="addLabels" />
<arg value="labelName" />
<arg value="--space" />
<arg value="nameOfSpace" />
<arg value="--title" />
<tokens>
<string value="${titles}" />
<stringtokenizer delims="," />
</tokens>
</apply>
</target>
使用Ant 1.9.2和executable =&#34; echo&#34;进行测试,给出:
Buildfile: build.xml
addLabels:
[apply] confluence --action addLabels labelName --space nameOfSpace --title foo
[apply] confluence --action addLabels labelName --space nameOfSpace --title "bar baz"
[apply] confluence --action addLabels labelName --space nameOfSpace --title etc
BUILD SUCCESSFUL
答案 1 :(得分:0)
使用批处理命令,使用for
命令可以轻松完成。一个简单的例子:
for %%A in ("Title 1" "Title 2" "Title2") DO (
atlassian confluence --action addLabels --labels labelName --space nameOfSpace --title %%A
)
如果标题列表非常大,这里的问题是可读性。更好的解决方案是使用process.cmd
脚本和包含所有标题的文件list.txt
。最终的脚本将是:
@echo off
for /F %%A in (list.txt) DO (
atlassian confluence --action addLabels --labels labelName --space nameOfSpace --title %%A
)