我正在尝试让我的批处理脚本更改命令提示符的标题,以更改回脚本启动之前的标题。
下面是一个例子:
@echo off
title My Script
REM rest of script here
:end
title %origcmdtitle%
所以在它运行之前,它会有一个默认的标题;比如Command Prompt
或C:\Windows\system32\cmd.exe
然后,当脚本运行时,标题更改为My Script
最后,当脚本结束时,我希望它改回原来的标题CMD(它只是保持为My Script
)
谢谢!
7条答案
按热度按时间wn9m85ua1#
这一直是编写批处理代码的许多棘手问题之一。
我看到过一些相当复杂的代码试图识别当前的标题并将值保存在变量中,以便在批处理脚本结束之前恢复标题,但我从未对这些结果完全满意。
我认为最可靠和直接的方法是在新的cmd.exe会话中启动脚本,然后您可以在其中设置标题而不受任何影响。一旦脚本结束,子进程将结束,原始cmd.exe进程将恢复控制,并恢复原始标题。
如果使用“唯一”的额外参数来表示已发生重新启动,则可以使脚本在新的cmd.exe会话中重新启动自身。然后可以使用SHIFT键还原原始参数。
下面是一个简单的例子:
这种方法有几个潜在的问题。
r1zk6ea12#
这里是使用确定当前命令窗口的PID的方法的一些示例代码;* (几年前由dbenham在DosTips上开发)*。
kyvafyod3#
可以简单地恢复默认标题:第一个月
qoefvg9y4#
Andreas给出的答案应该是赞成的,因为它非常擅长实际获取当前的cmd窗口标题。
答案可以进一步细化,以避免需要临时文件:
请注意,以上命令必须在批处理文件中使用。如果在交互式命令窗口中测试命令,则必须将%%i减少为仅%i:
ltskdhd15#
我通过使用PowerShell将原始标题存储在一个文件中,然后将标题读回到一个变量中来解决这个问题。
下面是一个例子:
oxosxuxt6#
答案是:
b4qexyjb7#
我不是批处理Maven,但您可以尝试为CD设置一个变量,如下所示: