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

从NANT更改命令(CMD)窗口的标题,nant,cmd,title,Nant,Cmd,Title,我希望能够在整个NAnt脚本中的不同点更改命令窗口的标题 我尝试使用该任务调用“title myTargetName”,但它给了我以下错误: “title”无法启动 The system cannot find the file specified 请问有没有办法做到这一点?提前谢谢 您可以使用cmd或批处理文件来运行包含以下内容的nant脚本: title %1 %NANT_PATH%\nant.exe %1 这应该起作用: <exec>title Step One</

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

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

“title”无法启动

The system cannot find the file specified

请问有没有办法做到这一点?提前谢谢

您可以使用cmd或批处理文件来运行包含以下内容的nant脚本:

title %1 
%NANT_PATH%\nant.exe %1
这应该起作用:

<exec>title Step One</exec>

<!-- Do some stuff -->

<exec>title Step Two</exec>
<exec>SetTitle.exe "Step One"</exec>

<!-- Do some stuff -->

<exec>SetTitle.exe "Step Two"</exec>
标题第一步
标题第二步

这将使用常规的
cmd.exe
命令。

如果您将此小程序编译为控制台应用程序:

namespace SetTitle
{
    internal static class Program
    {
        private static void Main(string[] args)
        {
            System.Console.Title = string.Join(" ", args);
        }
    }
}
那么这就行了:

<exec>title Step One</exec>

<!-- Do some stuff -->

<exec>title Step Two</exec>
<exec>SetTitle.exe "Step One"</exec>

<!-- Do some stuff -->

<exec>SetTitle.exe "Step Two"</exec>
SetTitle.exe“第一步”
SetTitle.exe“第二步”
您可以对自定义NAnt任务执行相同的操作,但所涉及的工作将更加复杂,并且您仍必须在脚本执行过程中发现NAnt任务程序集。

尝试以下操作:

' 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 设置窗口标题后立即添加“退出”命令

希望这有帮助, 顺致敬意,
Tom。

您可以在自定义任务中设置控制台标题。如果任务是在中定义的,则生成文件是自包含的

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>

不,对不起-我从南特收到这个错误“程序”是的必需属性。您是对的
title
本身不是一个可执行文件,而是一个由
cmd.exe
识别的特殊命令。我接受您的建议的方式是,cmd文件更改标题,然后运行特定脚本。这就是你的意思吗?我的意思是,在Cmd窗口中运行NAnt脚本时,我希望能够临时重命名运行窗口的标题,以指示系统当前正在处理脚本的哪一部分,因为每个脚本可以运行5分钟左右。你可以制作一个cmd或批处理,一个接一个地构建你想要的目标,并在每个新的目标调用上设置标题。我必须承认,我不太舒服,但是应该在没有任何附加要求的情况下跑步。嗯,试过这个。如果命令窗口在控制环境中,这没关系,但是在NAnt脚本中,这可能是“不确定的”,就像构建脚本在中途崩溃一样,我的新cmd会话仍然保持打开状态。赚大钱吧!干得好!正是我想要的。