windows - 如何避免在 cmd.exe 上弹出命令窗口

标签 windows command-line batch-file windows-installer

我有一个命令:

cmd.exe /c ping 1.1.1.1 -n 1 -w 10000 && echo second command goes here

但是在执行时它会打开一个命令窗口。有没有办法避免弹出命令窗口?

PS:我无法从那里删除 cmd.exe。如您所见,我试图将两个命令一个接一个地绑定(bind)到同一个字符串中。

谢谢。

编辑:抱歉。它不是一个 bat 文件。我想在 msiexec 的“UninstallString”中执行 2 个命令。我尝试了很多事情,以至于我的问题有点跑题了。

命令是:

msiexec <product> <package> && reg delete /xxx

最佳答案

最简单的选择是从最小化开始。快捷方式目标:

cmd /c START /MIN \path\to\test.bat

cmd /c START /MIN cmd /k ( ping 1.1.1.1 -w 10000 -n 1 && @ECHO All OK)

它没有隐藏或其他任何东西,但它不会显示在桌面上,或者更糟的是,它会抢走焦点。

如果您希望窗口自行消失,“cmd/c ...”将使它发生。 “cmd/k ...”将使窗口保持打开状态。

@CodyGray 在他发布的 SU 链接中提到了 B 计划。有些程序不会打开窗口,例如 wperl、pythonw 或 wscript(在 Windows 上原生可用)。如果您可以将命令传递给其中一个,那么您可以有效地双击一个图标并让它“静默”运行。

如果 Perl 可用,我肯定会使用它,因为您可以制作一些非常强大的单行代码,而无需创建其他文件。

wperl -MWin32 -MNet::Ping -e "$p=Net::Ping->new('icmp',10000); if ($p->ping('192.168.1.1')) { Win32::MsgBox('Ping Successful', 1 + MB_OK, 'All Good'); }"

在您的示例中,您将命令链接在一起,后者是一个通知。如果您不想为第一个命令打开一个窗口,那么当您通知用户某事时为第二个命令打开窗口会很尴尬。让进程调用“cmd/c start cmd/c @echo Everything's OK”可能会做到这一点,但使用 CMD 窗口进行用户通知可能不是 HCI 人员会笑的事情。

关于windows - 如何避免在 cmd.exe 上弹出命令窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17244579/

相关文章:

ASP.NET libwebp.dll 如何将 WebP 图像保存到磁盘

java - 使用静默安装将 Java 安装到带空格的目录中

windows - EXE header 中的奇怪值

windows - ForFiles 命令在 Windows 7 和 Windows 2008 Server 上返回不同的结果

powershell - 识别空文件夹

windows - VBS 如何制作自定义选项按钮?

javascript - Visual Studio 2013-Javascript

linux - Bash 脚本不继续读取文件的下一行

c++ - 允许表单接受命令行参数

batch-file - !modified! 是什么意思?做