【问题标题】:Change window command prompt string更改窗口命令提示符字符串
【发布时间】:2014-09-09 06:12:54
【问题描述】:

我想更改 Windows 命令提示符中的命令提示符字符串?

例如。

C:\current\path -> $CustomPrompt>

如果可能,我更喜欢使用 winapi 的解决方案。我已经看过了 一些控制台功能,但我找不到任何我认为会操纵提示字符串的东西?有人知道怎么做吗?

【问题讨论】:

  • 只设置PROMPT environment variable有什么问题?
  • 我正在编写一个 C++ 程序,所以如果可能的话,我想坚持使用 C++。哦,作为一个更正,PROMPT 不是环境变量,它是一个命令。
  • @user246694 你错了。 PROMPT 既是一个环境变量,也是设置该变量的 DOS/Windows 命令。
  • 如果我确实指的是命令,我怎么错了?你自己说这是一个设置变量的命令。
  • @user246694 当你说“PROMPT 不是环境变量”时你错了

标签: c++ windows winapi


【解决方案1】:

命令提示字符串被定义为环境变量PROMPT。您可以使用来自cstdlibsetenv() 函数修改此变量:

#include <stdlib.h>

//...

setenv("PROMPT", "$A$A", true);

例如,这会将提示字符串设置为“&&”(双与号)。如需更多有趣的示例,请查看this

编辑:有一种方法可以实现这一点无需重新启动命令解释器。创建以下批处理文件:

@echo off
break off
title custom command prompt
color 0a
cls

:cmd
 set /p cmd=command:

 %cmd%
 echo.
 goto cmd

让我们将其命名为“change_prompt.bat”然后,在您的 c++ 代码中执行批处理文件:

system("change_prompt.bat");

因此,提示将如下所示:

如您所见,情况发生了变化:

  • 提示窗口标题
  • 提示颜色
  • 提示字符串

【讨论】:

  • 除非这是一个愚蠢的rep-harvesting策略,否则OP应该注意这只会影响这个过程创建(稍后)的命令解释器实例的提示,并删除“解决方案”选择跨度>
  • -1 setenv 应该是std::setenv 使用&lt;cstdlib&gt;时,当前代码不保证编译。但是,使用&lt;cstdlib&gt; 并不是一个好的选择。此外,如前所述,这种方法仅适用于从此进程启动的命令解释器实例(如果它完全有效,我不清楚)。
  • @Cheersandhth.-Alf 已更正。好吧,我知道这不是一个好的选择。如果您有更好的,请随时发布。
  • 重新标头只使用 。重新函数,对不起,我没有注意到它是 Posix,而不是 C++ std。所以你所做的更正方向错误,只需删除std::(它不是标准函数),使用stdlib.h,并注意它是Posix函数。
  • 我在想也许只是满足于来自 的 std::system 并调用 std::system("Prompt myprompt");
猜你喜欢
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
相关资源
最近更新 更多