使用 vbscript 更改控制台标题

发布于 2024-09-05 18:17:38 字数 167 浏览 5 评论 0原文

有没有办法改变cmd标题?我写了一个vbs程序。但dos标题很糟糕。

名称为 c:\windows\system32\cscript.exe 我尝试使用:

title the_name 和 title =“name”

但这两个都不起作用。

感谢您的帮助。

is there a way to change the cmd title? I wrote a vbs program. But the dos title is bad.

The name ist c:\windows\system32\cscript.exe
I try it with:

title the_name and
title ="name"

But both doesn't works.

Thanks for help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

橘味果▽酱 2024-09-12 18:17:38

@AlexK您指向的链接实际上显示了如何更改命令窗口的标题,所以我不确定为什么这不能解决马蒂亚斯的问题。

@Matthias - 因为您已经在使用 cscript,所以您有几个选择:

  1. 您可以创建一个父脚本,打开多个具有唯一标题的窗口,如下所示:

  var x = new ActiveXObject("WScript.shell");

    for (var i=0; i < 5; i++) {
        x.run('cmd title your title ' + i + '| cscript.exe "params"');
    }
  

或者只是让父脚本执行一个子脚本,但在运行之前提示输入标题cscript 命令如下所示:


  var x = new ActiveXObject("WScript.shell");
      x.run('cmd title your title ' + 
            WScript.StdIn.ReadLine() + 
            '| cscript.exe "script path and params"');
  
  1. 您还可以从现有命令提示符使用“start”命令,每次运行脚本时只需更改标题的值
c:\>start "your title" cscript script_path.vbs
  1. 或者您可以使用 Windows api 以编程方式使用自定义更改标题Activex 对象。这绝对是一个更深入的解决方案,但您可以使用 C# 创建一个可以调用 Windows api 的 activex 对象,并使用 COM 从 vbscript 执行 C# 函数。您需要使用 findWindow 和 SetWindowText api 调用来更改 CMD 窗口的标题。

查看 IEUnit 项目,特别是 Win32Dom activex 对象。这是一个很好的起点,因为它解决了您对此选项可能遇到的“如何创建 ac# activex 对象”和“如何调用 win32 api”问题。它已经为您完成了 findWindow 部分。

http://code.google.com/p/ ieunit/source/browse/#svn%2Ftrunk%2Ftool%2FWin32Dom

@AlexK The link you point to actually shows how you CAN change the title of the command window so I'm not sure why that doesn't work as a solution to Matthias's problem.

@Matthias - since you are already using cscript you have a couple of options:

  1. You can create a parent script that opens multiple windows with unique titles like so:

  var x = new ActiveXObject("WScript.shell");

    for (var i=0; i < 5; i++) {
        x.run('cmd title your title ' + i + '| cscript.exe "params"');
    }
  

or just make the parent script execute one child script but prompt for the title before it runs the cscript command like so:


  var x = new ActiveXObject("WScript.shell");
      x.run('cmd title your title ' + 
            WScript.StdIn.ReadLine() + 
            '| cscript.exe "script path and params"');
  
  1. You can also use the "start" command from an existing command prompt, and just change the value of the title each time you run the script
c:\>start "your title" cscript script_path.vbs
  1. Or you could use the windows api to change the title programmatically using a custom activex object. This is definitely a little more in-depth of a solution but you can create an activex object using C# that can make calls to the windows api, and execute the C# function from vbscript using COM. You'll want to use the findWindow and SetWindowText api calls to change the title of the CMD window.

Check out the IEUnit project, specifically the Win32Dom activex object. It's a good project to start from because it solves the "how to create a c# activex object" and "how to call the win32 api" questions you might have for this option. And it already has the findWindow portion finsihed for you.

http://code.google.com/p/ieunit/source/browse/#svn%2Ftrunk%2Ftool%2FWin32Dom

零度℉ 2024-09-12 18:17:38

不幸的是你无法使用任何 WSH 对象从脚本内执行此操作

唯一的方法是通过中介启动脚本(使用 TITLE 命令的 .bat 或使用 %comspec% 参数的另一个脚本)。

Unfortunately you cannot do that from within the script using any of the WSH objects.

The only way to do it is to launch the script via an intermediary (a .bat using the TITLE command or another script using a %comspec% argument).

深陷 2024-09-12 18:17:38

您是否需要在代码中更改它,或者您只是想让它看起来更好一点?您可以通过创建脚本的快捷方式,然后更改快捷方式的名称(在快捷方式的属性中,更改为常规选项卡并更改那里的名称)来完成此操作。

Do you need to change it in the code or do you just want it to look a little nicer? You could possibly do it by creating a shortcut to your script and then changing the name of the shortcut (in the properties of the shortcut, change to the General tab and change the name there).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文