隐藏执行另一个.EXE文件的.BAT文件的命令窗口

这是Windows中的batch file。

这是我的.bat文件

@echo off copy "C:\Remoting.config-Training" "C:\Remoting.config" "C:\ThirdParty.exe" 

这工作正常,除了.bat文件离开命令窗口打开整个“ThirdParty”应用程序正在运行的时间。
我需要命令窗口closures。

我将使用该应用程序的快捷方式,但是我必须能够首先运行此复制命令(它实际上会更改用于该应用程序的数据库和服务器)。

ThirdParty应用程序不允许用户更改数据库或应用程序服务器的来源。

我们这样做是为了允许用户从testing环境更改为生产环境。

为我start工作:

 @echo off copy "C:\Remoting.config-Training" "C:\Remoting.config" start C:\ThirdParty.exe 

编辑:好吧,仔细一看, start似乎解释为引用新窗口标题的第一个参数。 因此,如果您需要引用ThirdParty.exe的path,则还必须提供标题string。

例子:

 :: Title not needed: start C:\ThirdParty.exe :: Title needed start "Third Party App" "C:\Program Files\Vendor\ThirdParty.exe" 

尝试这个:

 @echo off copy "C:\Remoting.config-Training" "C:\Remoting.config" start C:\ThirdParty.exe exit 

用下面的代码创build一个.vbs文件:

CreateObject(“Wscript.Shell”)。运行“your_batch.bat”,0,True

这个.vbs将运行隐藏的your_batch.bat

为我工作得很好。

伟大的提示。 它也适用于运行Java程序的batch file。

 start javaw -classpath "%CP%" main.Main 

使用start工作正常,除非你正在使用脚本语言。 幸运的是,有一个Python的出路 – 只需使用pythonw.exe而不是python.exe

 :: Title not needed: start pythonw.exe application.py 

如果您需要报价,请执行以下操作:

 :: Title needed start "Great Python App" pythonw.exe "C:\Program Files\Vendor\App\application.py" 

我还没有真正find一个很好的方法来做到这一点,所以我只是使用一个名为hstart的实用程序,它为我做。 如果有一个更好的方法去做,那会很好。

使用Batch2Exe将batch file编译为可执行文件http://www.f2ko.de/programs.php?lang=en&pid=b2e 。 使用“隐形窗口”选项。

您可能有兴趣尝试我的silentbatch程序,该程序将运行一个.bat / .cmd脚本,完全禁止创build命令提示符窗口(以便您不会看到它,然后消失),并可以select将输出logging到指定的文件。

在不同的用户下运行它。 假设这是一个窗口框,为计划任务创build一个用户帐户。 以该用户身份运行它。 命令提示符只会显示给当前login的用户。

您可以创build一个VBS脚本来强制隐藏窗口。

================... Set WshShell = WScript.CreateObject("WScript.Shell") obj = WshShell.Run("""C:\Program Files (x86)\McKesson\HRS Distributed\SwE.bat""", 0) set WshShell = Nothing '=====================================...

然后,而不是执行batch file,执行该脚本。

请使用这个,以上不起作用。 我已经在Window server 2003中testing过了。

 @echo off copy "C:\Remoting.config-Training" "C:\Remoting.config" Start /I "" "C:\ThirdParty.exe" exit 

要使执行.exe文件的.bat文件的命令窗口尽快退出,请在要执行的文件之前使用@start行。 这里是一个例子:

(insert other code here) @start executable.exe (insert other code here)

您不必使用@start executable.exe来使用其他代码。

或者你可以使用:

Start /d "the directory of the executable" /b "the name of the executable" "parameters of the executable" %1 (%1是否将文件传递给可执行文件,例如notepad.exe foo.txt ,这里%1是“foo.txt”。

启动命令的/ b参数执行如下操作:“启动应用程序时不打开新的命令提示符窗口,除非应用程序启用CTRL + C处理,否则CTRL + C处理将被忽略,使用CTRL + BREAK中断应用程序。 这正是我们想要的。