从NANT更改命令(CMD)窗口的标题

时间:2009-07-31 13:46:27

标签: nant cmd title

我希望能够在我的NAnt脚本中的各个点更改命令窗口的标题。

我曾尝试使用该任务调用'title myTargetName',但它给了我以下错误:

  

'title'未能开始。

The system cannot find the file specified

请问有办法吗?提前谢谢!

5 个答案:

答案 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命令。