Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何通过命令提示更改标题并保留系统信息_C_Windows - Fatal编程技术网

C 如何通过命令提示更改标题并保留系统信息

C 如何通过命令提示更改标题并保留系统信息,c,windows,C,Windows,我试图通过命令行启动一个进程,但当我使用/k选项cmd时,我丢失了所有系统信息。如何保存这些信息,以及是否存在可以更改以更改标题的环境变量 //first line where I sprintf commands into a buffer sprintf(commandLine_buf,"%s /T:F9 /K TITLE=What is your command ",getenv("ComSpec")) @埃尔克森:谢谢你的建议奏效了。我对它做了一点修改,但效果不错。这就是它看起来的样

我试图通过命令行启动一个进程,但当我使用
/k
选项cmd时,我丢失了所有系统信息。如何保存这些信息,以及是否存在可以更改以更改标题的环境变量

//first line where I sprintf commands into a buffer
sprintf(commandLine_buf,"%s  /T:F9 /K TITLE=What is your command ",getenv("ComSpec"))
@埃尔克森:谢谢你的建议奏效了。我对它做了一点修改,但效果不错。这就是它看起来的样子。下面

sprintf(commandLine_buf, "cmd /c PROMPT Speak to me$G & TITLE What is your command? & \"%s\"",getenv("ComSpec"));
我的提示如下所示:

但我希望它看起来像这样:


在最后的实现中,我在另一行获得了
ComSpec
值,并运行了
sprintf
函数,如下所示:

char* ComSpecVar;
ComSpecVar = getenv("ComSpec");
sprintf(commandLine_buf, "cmd /c COLOR F9 & PROMPT Speak to me$G & "
    "TITLE What is your command? & \"%s\"", ComSpecVar);
随后的提示如下所示:


您是否尝试过
cmd/K“VER&PROMPT=talk to me&TITLE=What is your command”
如果您通过
system
运行此命令,该系统已经使用了
cmd/c
,因此您可以运行类似于
sprintf(commandLine\u buf,“PROMPT talk to me$G&TITLE您的命令是什么?&\%s\”,getenv(“ComSpec”)
)。这将更改shell提示符和控制台标题,然后启动一个新的交互式shell。由
system
启动的第一个CMD实例将等待子shell退出。哦,疯狂,你建议@ManthanTilva我已经尝试过类似的方法,但它没有我想要的格式。它在命令标题和Microsoft Windows bla bla bla bla之间的顶部有一个空格。谢谢你的回复,但不是我想要的安静。你是如何用C运行这个命令行的<代码>系统,
spawnl
CreateProcess
ShellExecute
?添加答案。第一部分使用
ComSpec
值而不是“cmd”。另外,单独获取环境变量,以便在未定义
ComSpec
的情况下替换
“cmd.exe”
。如果未定义
ComSpec
,则
ComSpecVar
将为
NULL
,并且应将其设置为字符串文字
“cmd.exe”
。另外,在命令行中的两个位置使用此值,并引用整个命令行,例如
sprintf(命令行“\%s\”/c\”颜色F9和提示符Talk to me$g&TITLE您的命令是什么?&\%s\“\”,ComSpecVar,ComSpecVar)
。好吧,这很有趣,我之前尝试过这个精确的sprintf,但没有做到第一句话中的那一点,我将继续努力。