隐藏执行另一个.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中断应用程序。 这正是我们想要的。