Изменение заголовка окна команд (CMD) из NANT - PullRequest
2 голосов
/ 31 июля 2009

Я хотел бы иметь возможность изменять заголовок окна командной строки в различных точках моего сценария NAnt.

Я пытался использовать задачу для вызова title myTargetName, но это дает мне следующую ошибку:

'title' не удалось запустить.

The system cannot find the file specified

Есть ли способ сделать это, пожалуйста? Заранее спасибо!

Ответы [ 5 ]

2 голосов
/ 24 февраля 2010

Вы можете установить заголовок консоли в пользовательском задании. Если задача определена в сценарии , файл сборки является автономным.

Заголовок консоли вернется после завершения 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 голос
/ 23 февраля 2010

Попробуйте это:

' 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>

Edit: В конце скрипта вызовите команду exit для выхода из вложенных уровней процессора командной строки cmd.exe ... Предположим, у вас есть три 'exec' для ' cmd / k ', вам понадобятся три команды' exit ', чтобы вернуться к исходной оболочке cmd.exe, подумайте об этом, как о выталкивании cmd.exe из стека на время сценария nant ...

Редактирование # 2: Согласно комментарию Бретта ... просто мысль - почему бы не сделать это таким образом ...

<exec>cmd /k title one </exec>
<exec>exit</exec>

Добавить команду 'exit' сразу после установки заголовка окна ...?

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

1 голос
/ 31 июля 2009

Если вы скомпилируете эту маленькую программу как консольное приложение:

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 обнаруживаемой во время выполнения скрипта.

0 голосов
/ 31 июля 2009

Это должно работать:

<exec>title Step One</exec>

<!-- Do some stuff -->

<exec>title Step Two</exec>

Используется обычная команда cmd.exe.

0 голосов
/ 31 июля 2009

Вы можете использовать cmd или командный файл для запуска сценария nant, содержащего это:

title %1 
%NANT_PATH%\nant.exe %1
...