2

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

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

“标题”无法启动。

The system cannot find the file specified

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

4

5 回答 5

2

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

一旦 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>
于 2010-02-24T05:05:02.613 回答
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 任务程序集可被发现。

于 2009-07-31T15:04:56.407 回答
1

试试这个:

' 在你的命令提示符下
标题 foobar

' 标题现在应该是不带引号的 'foobar'

'现在发出这个...
cmd /k 富巴

' 标题现在应该是不带引号的 'fubar'

所以我想你需要把它改成这样:

<exec>cmd /k 标题一 </exec>

编辑:在脚本结束时,调用exit命令以退出cmd.exe命令行处理器的嵌套级别...假设您有三个用于 'cmd /k' 的 'exec',您将需要三个 'exit' 命令依次要回到原来的 cmd.exe shell,可以把它想象成在 nant 脚本执行期间将 cmd.exe 从堆栈中弹出......

编辑#2:根据布雷特的评论......只是一个想法 - 为什么不这样做......

<exec>cmd /k 标题一 </exec>
<exec>退出</exec>

设置窗口标题后立即添加“退出”命令...?

希望这会有所帮助,最好的问候,汤姆。

于 2010-02-23T16:16:30.360 回答
0

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

title %1 
%NANT_PATH%\nant.exe %1
于 2009-07-31T14:18:01.820 回答
0

这应该有效:

<exec>title Step One</exec>

<!-- Do some stuff -->

<exec>title Step Two</exec>

这使用常规cmd.exe命令。

于 2009-07-31T14:18:31.430 回答