我有一个命令:
cmd.exe /c ping 1.1.1.1 -n 1 -w 10000 && echo second command goes here
但执行时会打开一个命令窗口。有没有办法避免命令窗口弹出?
PS:我无法从那里删除cmd.exe。如您所见,我试图在同一个字符串中依次绑定两个命令。
感谢。
编辑:抱歉。它不是一个bat文件。我想在msiexec的“UninstallString”中执行2个命令。我正在尝试这么多事情,我的问题有点过时了。
命令是:
msiexec <product> <package> && reg delete /xxx
答案 0 :(得分:7)
最简单的选择是启动最小化的东西。快捷方针目标:
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链接中引用。有些程序不能打开窗口,比如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人员会笑的东西。
答案 1 :(得分:2)
不,所有批处理文件都在命令行窗口中打开;这与您的特定文件中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
答案 2 :(得分:2)
正如Andreas Rejbrand已经解释过的那样,命令提示符窗口不是来自脚本中的显式cmd.exe
调用,而是来自执行.bat
脚本本身。 (尽管您提出了索赔,但您没有提供任何证据证明为何需要明确调用cmd.exe
。.bat
脚本的重点是批量命令。)< / p>
也就是说,Paul Miner和我编写的silentbatch程序可以执行批处理脚本并禁止命令提示符窗口。要使用它,您必须创建一个调用silentbatch.exe test.bat
的Windows快捷方式并双击它,而不是直接双击test.bat
。
答案 3 :(得分:1)
您还可以为批处理脚本创建快捷方式,然后在属性中选择以最小化启动应用程序。这里解释:CNET: How to automatically start a program minimized in Windows
步骤1:右键单击要开始最小化的程序的快捷方式,然后选择“属性” 第2步:单击“运行”下的下拉菜单 第3步:选择&#34;最小化,&#34;然后单击“确定”按钮。
答案 4 :(得分:0)
从win cmd:
start /b cmd.exe /c "ping 1.1.1.1 -n 1 -w 10000 & echo second command goes here"
运行这两个命令而无需打开另一个cmd窗口,而无需等待便可以使父窗口保持畅通无阻,以等待其他命令。