【发布时间】:2021-05-21 15:50:12
【问题描述】:
我想更改从批处理文件运行的 cmd 窗口标题栏的标题,但显然标题命令不适用于批处理 (.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]”由于某种原因不起作用……
【问题讨论】:
-
打开command prompt,运行
help,查看Windows commands的输出列表,并附上简要说明。使用/?作为参数运行命令START(或任何其他命令)以获取命令的帮助输出。试试start /?。您需要的是命令TITLE。可以在运行title /?时阅读此命令的简短帮助。批处理文件中的title %~n0将控制台窗口的标题更改为批处理文件的名称。 -
好吧,仅使用
title %~n0并不安全。批处理文件可能会对某人进行恶意操作,重命名批处理文件并添加一个与符号,如Development & Test!.cmd。为了以安全的方式使用批处理文件名作为窗口标题,而不在窗口标题中显示的%~n0周围使用",必须使用以下行:1.setlocal EnableExtensions DisableDelayedExpansion,2.set "BatchName=%~n0",3。setlocal EnableDelayedExpansion, 4. 标题!BatchName!, 5.endlocal和再次endlocal。 -
嗨,谢谢@Mofi。我尝试了文字“title %~n0”,但不幸的是它也没有用。我知道为什么真的......我附上了截图,请看一下。
-
好吧,你运行 Linux shell 解释器
bash来执行-c之后指定的命令行来执行figlet并传递frpc_wake.cmd。为什么批处理文件frpc_wake.cmd不能直接运行?figlet到底是什么?为什么在 Windows 上使用 Linux shell 解释器bash?bash无法解释 Windows 批处理文件,figlet很可能会启动C:\Windows\System32\cmd.exe来处理批处理文件。因此,窗口标题通过命令 TITLE 更改为frpc_wake,但接下来很快被用于处理croncli.cmd的cmd.exe的开始全名替换。 -
为什么批处理文件
croncli.cmd没有使用命令CALL 从frpc_wake.cmd中调用?请参阅我在How to call a batch file that is one level up from the current directory? 上的回答,无论您想做什么,您肯定使用了太多的脚本解释器。控制台窗口标题一旦由命令 TITLE 设置就不再固定。它也可以被其他程序更改,并且由于一系列脚本解释器一个接一个地启动而发生在这里。
标签: windows batch-file cmd