Alterando o título de uma janela de comando (CMD) de Nant
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!
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.