我希望能够在整个 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 ' 标题现在应该是不带引号的 'foobar' '现在发出这个... cmd /k 富巴 ' 标题现在应该是不带引号的 'fubar'
所以我想你需要把它改成这样:
<exec>cmd /k 标题一 </exec>
编辑:在脚本结束时,调用exit
命令以退出cmd.exe
命令行处理器的嵌套级别...假设您有三个用于 'cmd /k' 的 'exec',您将需要三个 'exit' 命令依次要回到原来的 cmd.exe shell,可以把它想象成在 nant 脚本执行期间将 cmd.exe 从堆栈中弹出......
编辑#2:根据布雷特的评论......只是一个想法 - 为什么不这样做......
<exec>cmd /k 标题一 </exec> <exec>退出</exec>
设置窗口标题后立即添加“退出”命令...?
希望这会有所帮助,最好的问候,汤姆。
您可以使用 cmd 或批处理文件来运行包含以下内容的 nant 脚本:
title %1
%NANT_PATH%\nant.exe %1
这应该有效:
<exec>title Step One</exec>
<!-- Do some stuff -->
<exec>title Step Two</exec>
这使用常规cmd.exe
命令。