繁体   English   中英

Windows 批处理 cmd 文件“标题”命令不起作用

[英]Windows batch cmd file "title" command not working

我想更改从批处理文件运行的 cmd window 标题栏的标题,但显然标题命令不适用于批处理(.cmd)文件。

当我用谷歌搜索并阅读 stackoverflow 时,我发现有三个可能的命令可以解决这个问题,但到目前为止,它们都没有对我有用:

start "<title>" # => this starts a new shell window, not a solution
system "title \"Window title\""; # => "system" not found 
title cmdtitle # => this works on a manually opened cmd window (win-R -> cmd) but does not work on batch files

那么,这有什么问题呢?

(编辑)

如下图,“title[title]”由于某种原因不起作用……

在此处输入图像描述

因此,由于@Mofi,我知道出了什么问题,这里是解决我尝试过的问题的解决方法。

——原因:

此问题的原因是批处理文件上的“someprogram.cmd --option 不管”行。 在另一个 cmd 程序文件上,应该有一些“标题”行覆盖先前定义的标题行。

——解决办法

虽然我对 cmd 脚本不熟悉,并且对这个标题行为感到沮丧(标题很容易被覆盖,而且显然它是一种习惯编码 - 就像这种情况下 nodejs - ),但实际上没有办法,但需要采取一些额外的努力对于这个问题,这里有解决方法

  1. 手动修改子 cmd 程序文件(在本例中为 node.js 生成的文件)

在这种情况下,node.js cmd 程序内部如下所示,该特定行定义了“标题”并导致覆盖它,因此修改该行。

(默认)

endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\node_modules\node-cron-cli\croncli" %*

(例如)

endLocal & goto #_undefined_# 2>NUL || title croncli.cmd & "%_prog%"  "%dp0%\node_modules\node-cron-cli\croncli" %*
  1. 覆盖最后一个子程序中的标题

在任何时候标题都是最后一个定义的前提下,最有效的方法应该是在最后一个程序上定义“标题”,即主 node.js 程序(在这种情况下)。

这将从 node.js 定义 Windows cmd 标题。 这还没有经过我自己的测试,但应该可以工作。

if (process.platform == 'win32') {
  process.title = title;
} else {
  process.stdout.write('\x1b]2;' + title + '\x1b\x5c');
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM