Pergunta

Eu gostaria de poder alterar o título da janela de comando em vários pontos em todo o meu script NANT.

Eu tentei usar a tarefa para chamar o 'título MyTargetName', mas isso me dá o seguinte erro:

'Title' não conseguiu começar.

The system cannot find the file specified

Existe uma maneira de fazer isso, por favor? Desde já, obrigado!

Foi útil?

Solução

Você pode definir o título do console em uma tarefa personalizada. Se a tarefa for definida em um roteiro, o arquivo de compilação está independente.

O título do console será revertido assim que o NANT terminar.

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

Outras dicas

Se você compilar este pequeno programa como um aplicativo de console:

namespace SetTitle
{
    internal static class Program
    {
        private static void Main(string[] args)
        {
            System.Console.Title = string.Join(" ", args);
        }
    }
}

Então isso funcionaria:

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

<!-- Do some stuff -->

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

Você pode fazer o mesmo com uma tarefa personalizada, mas o trabalho envolvido seria mais complicado e você ainda precisaria fazer com que sua montagem de tarefas não seja descoberta durante a execução do script.

Experimente isso:

' 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

Então eu acho que você precisa alterar para gostar disso:

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

Editar: No final do script, invocar o exit comando para sair dos níveis aninhados do cmd.exe Processador de linha de comando ... Suponha que você tenha três 'Exec' para o 'cmd /k', você precisaria de três comandos de 'saída' para voltar ao shell cmd.exe original, pense nisso como estourar CMD.exe Fora da pilha durante a duração do script Nant ...

Editar#2: De acordo com o comentário de Brett ... apenas um pensamento - por que não fazer dessa maneira ....

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

Adicione o comando 'Exit' imediatamente após definir o título da janela ...?

Espero que isso ajude, cumprimentos, Tom.

Você pode usar um arquivo CMD ou lote para executar o script NANT que contém isso:

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

Isso deve funcionar:

<exec>title Step One</exec>

<!-- Do some stuff -->

<exec>title Step Two</exec>

Isso usa um regular cmd.exe comando.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top