我有一个命令:
cmd.exe /c ping 1.1.1.1 -n 1 -w 10000 && echo second command goes here
但是执行时会打开一个命令窗口。 有没有办法避免popup命令窗口?
PS:我无法从那里删除cmd.exe。 正如你所看到的,我试图将两个命令依次绑定在同一个string中。
谢谢。
编辑:对不起。 它不是一个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 …”将使窗口打开。
计划B由@CodyGray在他发布的SU链接中引用。 有些程序不能打开windows,比如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 OK”可能会这样做,但是使用CMD窗口进行用户通知可能不是HCI人员会微笑的东西。
不,所有批处理文件都在命令行窗口中打开; 这与您的特定文件中存在的cmd.exe
无关。 批处理文件只是一些命令行命令,每行一个。
我不明白你为什么写test.bat
的方式。 我宁愿期待
ping 1.1.1.1 -n 1 -w 10000 echo second command goes here
如果出于某种原因,你真的只需要使用一条线就可以了
ping 1.1.1.1 -n 1 -w 10000 && echo second command goes here
正如Andreas Rejbrand已经解释的那样,命令提示符窗口不是来自脚本中显式的cmd.exe
调用,而是来自执行.bat
脚本本身。 (尽管你的声明,你没有提供任何证据,为什么显式调用cmd.exe
是必要的。一个.bat
脚本的全部重点是一起批处理命令。
也就是说,Paul Miner和我编写的silentbatch程序可以执行批处理脚本并禁止命令提示符窗口。 要使用它,你将不得不创建一个Windows快捷方式来调用silentbatch.exe test.bat
,然后双击它,而不是直接双击test.bat
。
您也可以创建批处理脚本的快捷方式,然后在属性中选择最小化启动应用程序。 这里解释: CNET:如何自动启动一个在Windows中最小化的程序
步骤1:右键单击要启动最小化的程序的快捷方式,然后选择“属性”。
第2步:点击运行下的下拉菜单。
第3步:选择“最小化”,然后单击确定按钮。