2009-07-31 58 views
2

我希望能夠在整個我的NAnt腳本的各個點更改命令窗口的標題。從南特更改命令(CMD)窗口的標題

我試圖用任務來調用「稱號myTargetName」,但它給了我下面的錯誤:

'title' failed to start.

The system cannot find the file specified 

有沒有辦法做到這一點嗎?提前致謝!

回答

2

您可以在自定義任務中設置控制檯標題。如果任務在script中定義,則構建文件是自包含的。

一旦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> 
0

你可以使用一個命令或批處理文件來運行含有此惡性腳本:

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

我如何採取您的建議是,cmd文件更改標題,然後運行特定的腳本。你是這個意思嗎? 我的意思是,在Cmd窗口中運行NAnt腳本期間,我希望能夠以即席爲基礎重新命名運行窗口的標題,作爲指示系統腳本的哪一部分目前正在處理中,因爲每個腳本可以運行5分鐘左右。 – 2009-07-31 14:55:09

+0

您可以創建cmd或批處理,一個接一個地構建您想要的目標,並在每個新的目標調用中設置標題。我不得不承認,但應該運行沒有任何額外的要求。 – zoidbeck 2009-07-31 19:02:19

0

這應該工作:

<exec>title Step One</exec> 

<!-- Do some stuff --> 

<exec>title Step Two</exec> 

這將使用常規cmd.exe命令。

+0

不,抱歉 - 我從NAnt收到此錯誤... '程序'是的必需屬性。 – 2009-07-31 14:51:26

+0

你是對的。 `title`不是可執行文件,而是`cmd.exe`識別的特殊命令。 – 2009-07-31 15:01:24

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任務程序集可被發現。

+0

不好 - 試過這個,它不起作用,對不起。 – 2010-02-23 15:35:31

1

試試這個:

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

編輯:在腳本的末尾,調用exit命令退出cmd.exe命令行處理器的嵌套級別......假設您爲'cmd/k'具有三個'exec',則需要三個'exit'命令才能返回到原始cmd.exe外殼,想到它像彈出cmd.e XE出棧的惡性腳本的時間...

編輯#2:按照佈雷特的評論...只是一個想法 - 爲什麼不這樣做這樣....

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

設置窗口標題後立即添加'exit'命令...?

希望這會有所幫助, 最好的問候, 湯姆。