NAnt スクリプトのさまざまな時点でコマンド ウィンドウのタイトルを変更できるようにしたいと考えています。
タスクを使用して「title myTargetName」を呼び出そうとしましたが、次のエラーが表示されます。
「タイトル」を開始できませんでした。
The system cannot find the file specified
これを行う方法はありますか?前もって感謝します!
カスタム タスクでコンソール タイトルを設定できます。タスクがスクリプトで定義されている場合、ビルド ファイルは自己完結型です。
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>
この小さなプログラムをコンソールアプリとしてコンパイルする場合:
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タスクアセンブリを検出可能にする必要があります。
これを試して:
' コマンド プロンプトで タイトルフーバー ' タイトルは引用符なしで 'foobar' となるはずです ' では、これを発行してください... cmd /k fubar ' タイトルは引用符なしで 'fubar' となるはずです
したがって、次のように変更する必要があると思います。
<exec>cmd /k タイトル 1 </exec>
編集:スクリプトの最後で、コマンドを呼び出してexit
、コマンド ライン プロセッサのネストされたレベルを終了しcmd.exe
ます...「cmd /k」に対して 3 つの「exec」があるとします。順番に 3 つの「exit」コマンドが必要になります。元の cmd.exe シェルに戻るには、nant スクリプトの実行中にスタックから cmd.exe をポップするようなものと考えてください...
編集#2:ブレットのコメントによると...ただの考え-このようにしてみませんか....
<exec>cmd /k タイトル 1 </exec> <exec>終了</exec>
ウィンドウのタイトルを設定した直後に「exit」コマンドを追加する...?
これがお役に立てば幸いです。よろしくお願いします、トム。
cmd またはバッチ ファイルを使用して、これを含む nant スクリプトを実行できます。
title %1
%NANT_PATH%\nant.exe %1
これはうまくいくはずです:
<exec>title Step One</exec>
<!-- Do some stuff -->
<exec>title Step Two</exec>
これは通常のcmd.exe
コマンドを使用します。