控制台提示窗口出现在系统上(“启动目录”)但不在系统上(“启动 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虚拟机繁忙解决方案

删除文件夹提示”该项目不在请确认该项目位置“

Swift 3 尝试呈现其视图不在窗口层次结构中

电脑出现“损坏的图像”窗口提示dll没有被指定在Windows上运行如何解决

尝试在其视图不在窗口层次结构中的 UIViewController 上呈现 UIViewController