我有一个C ++方法(使用Visual Studio,如果有帮助的话)调用cmd,如下所示:
start \B example.exe arg1 arg2 arg3
问题是此调用会打开一个(cmd)窗口。如果我打开了另一个cmd,\ B可以正常工作,但如果没有,则会打开一个新窗口。
我也试过没有开始\ B但是它是一样的....
我想避免这个新窗口,但我不知道如何。有什么想法吗?
答案 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"
,它就会运行隐藏的任何内容。