控制台提示窗口出现在系统上(“启动目录”)但不在系统上(“启动 ipconfig”)
Posted
技术标签:
【中文标题】控制台提示窗口出现在系统上(“启动目录”)但不在系统上(“启动 ipconfig”)【英文标题】:Console prompt window appear on system("start dir") but not on system("start ipconfig") 【发布时间】:2015-07-01 13:14:45 【问题描述】:我尝试创建一个简单的用户界面,在点击每个按钮时在后台运行命令提示符(但 Windows 控制台不能消失)。
但在此之前,我尝试过类似system("start dir");
的方法来查看按钮是否有效。
这是问题所在:当我单击左侧按钮时,Windows 控制台出现并且不退出单元,我将其关闭。但这仅适用于system("start dir");
。如果我将 dir 更改为 ipconfig (或另一个调用函数),Windows 控制台将出现一秒钟并退出。我尝试了system("PAUSE");
或getch();
之类的方法,但它不起作用。
为什么此命令可以与 dir 一起使用,但不能与其他命令一起使用?
【问题讨论】:
【参考方案1】:DIR 和 IPCONFIG 有一个根本的区别,DIR 命令是内置在命令处理器(又名 shell)中,IPCONFIG 是一个单独的程序,存储在 c:\windows\system32 中。
当你输入 START /?在命令行中,您可以看到为什么它以不同的方式对待它们:
If it is an internal cmd command or a batch file then
the command processor is run with the /K switch to cmd.exe.
This means that the window will remain after the command
has been run.
If it is not an internal cmd command or batch file then
it is a program and will run as either a windowed application
or a console application.
另一种方法是让命令处理器执行命令并在之后退出。您可以使用 /c 选项:
system("cmd.exe /c dir");
或者更简单,因为 system() 自动将作业传递给命令处理器:
system("dir");
停止使用 start :)
【讨论】:
谢谢!现在我知道了 DIR 和 IPCONFIG 之间的区别。但是我该如何解决我的问题呢? 呃,我给出了具体的 sn-ps,你唯一可能做错的事情就是不要尝试它们。 当然,我试过 system("cmd.exe /c ipconfig");和系统(“ipconfig”);但控制台会出现一秒钟然后消失。 @RaymondChen 我已经不止一次阅读他的回答了。无论如何,你的代码对我有用。谢谢你。 :) @aGer 从您的问题中不清楚您是否希望两者都暂停,或者您都不想暂停。汉斯和我以为你不想停下来。但汉斯的回答中也给出了让两者都暂停的方法。以上是关于控制台提示窗口出现在系统上(“启动目录”)但不在系统上(“启动 ipconfig”)的主要内容,如果未能解决你的问题,请参考以下文章
Liunxcentos虚拟机打开黑屏进入不了系统也关不了机XXX虚拟机繁忙解决方案