如何在不打开窗口的情况下调用CMD

时间:2010-11-25 14:13:46

标签: windows command-line callback cmd

我有一个C ++方法(使用Visual Studio,如果有帮助的话)调用cmd,如下所示:

start \B example.exe arg1 arg2 arg3

问题是此调用会打开一个(cmd)窗口。如果我打开了另一个cmd,\ B可以正常工作,但如果没有,则会打开一个新窗口。

我也试过没有开始\ B但是它是一样的....

我想避免这个新窗口,但我不知道如何。有什么想法吗?

8 个答案:

答案 0 :(得分:11)

我不知道如何在C ++中这样做,但是打开一个新的命令提示符窗口,使用我将使用的批处理文件也最小化(或“隐藏”):

start /min cmd

或者,如果您启动命令提示符,则可以键入:

@echo off
cls && start /b cmd

这将重新启动当前命令提示符窗口而不关闭它,但重置所有先前设置的环境变量。希望这可以帮助!

(PS。这已经过测试,在Windows 7旗舰版操作系统上取得了成功)

答案 1 :(得分:7)

您可以使用" / C"开关

cmd.exe /c dir/b 

这将运行" dir / b"命令和退出 - 不会显示任何窗口,但是如果要关闭ECHO,请使用" / q"开关

cmd.exe /c/q dir

答案 2 :(得分:3)

尝试ShellExecuteEx,设置nShow = SW_HIDE。

答案 3 :(得分:2)

如何使用WSH而不是CMD提示符?

您可以使用.Run,​​0隐藏窗口,如:

Set objShell = WScript.CreateObject("WScript.Shell")
isHidden = 0 'change 0 to 1 to show the CMD prompt
objShell.Run "%comspec% /c myfile.bat", isHidden

答案 4 :(得分:1)

从win cmd:

start /b cmd /c "example.exe arg1 arg2 arg3"

运行另一个没有窗口运行程序的CMD实例,并且不会阻止父窗口,因此它不会冻结。

不需要/q开关(无论如何都不会起作用),并且会出现错误:

'/q' is not recognized as an internal or external command,
operable program or batch file.

答案 5 :(得分:0)

只需在没有开始的情况下调用它:

example.exe arg1 arg2 arg3

答案 6 :(得分:0)

要运行cmd文件并退出,请使用:

$env:COMPUTERNAME $env:USERNAME $env:USERDNSDOMAIN

答案 7 :(得分:0)

您可以使用这个很小的工具“quiet.exe”,虽然很旧但仍然适用于 Windows 10。

https://www.joeware.net/freetools/tools/quiet/index.htm

只需调用 quiet.exe "program command line",它就会运行隐藏的任何内容。