我希望能够在我的NAnt脚本中的各个点更改命令窗口的标题。
我曾尝试使用该任务调用'title myTargetName',但它给了我以下错误:
'title'未能开始。
The system cannot find the file specified
请问有办法吗?提前谢谢!
答案 0 :(得分:2)
您可以在自定义任务中设置控制台标题。如果任务是在script中定义的,则构建文件是自包含的。
控制台标题将在nant完成后恢复。
<project default="title">
<target name="title">
<consoletask title='step 1'/>
<sleep minutes="1" />
<consoletask title='step 2'/>
<sleep minutes="1" />
<consoletask title='step 3'/>
<sleep minutes="1" />
</target>
<script language="C#">
<code>
[TaskName("consoletask")]
public class TestTask : Task
{
private string title;
[TaskAttribute("title", Required=true)]
public string Title
{
get { return title; }
set { title = value; }
}
protected override void ExecuteTask() {
System.Console.Title = title;
}
}
</code>
</script>
</project>
答案 1 :(得分:1)
如果您将这个小程序编译为控制台应用程序:
namespace SetTitle
{
internal static class Program
{
private static void Main(string[] args)
{
System.Console.Title = string.Join(" ", args);
}
}
}
然后这会起作用:
<exec>SetTitle.exe "Step One"</exec>
<!-- Do some stuff -->
<exec>SetTitle.exe "Step Two"</exec>
您可以对自定义的NAnt任务执行相同的操作,但所涉及的工作会更复杂,并且您仍然必须在脚本执行期间使您的NAnt任务程序集可被发现。
答案 2 :(得分:1)
试试这个:
' In your command prompt title foobar ' The title now should say 'foobar' without quotes ' Now issue this... cmd /k fubar ' The title now should say 'fubar' without quotes
所以我想你需要把它改成这样:
<exec>cmd /k title one </exec>
编辑:在脚本结束时,调用exit
命令退出cmd.exe
命令行处理器的嵌套级别...假设您有三个' exec'为'cmd / k',你需要三个'exit'命令才能回到原来的cmd.exe shell,想想它就像在nant脚本的持续时间内从堆栈中弹出cmd.exe一样。 ..
编辑#2:根据Brett的评论......只是一个想法 - 为什么不这样做......
<exec>cmd /k title one </exec> <exec>exit</exec>
在设置窗口标题后立即添加'exit'命令...?
希望这有帮助, 最好的祝福, 汤姆。
答案 3 :(得分:0)
您可以使用cmd或批处理文件来运行包含以下内容的nant脚本:
title %1
%NANT_PATH%\nant.exe %1
答案 4 :(得分:0)
这应该有效:
<exec>title Step One</exec>
<!-- Do some stuff -->
<exec>title Step Two</exec>
这使用常规的cmd.exe
命令。