我有一个用于启动程序的批处理脚本,例如notepad.exe
。当我双击此批处理文件时,记事本正常启动,但启动notepad.exe
的cmd
的黑色窗口仍保留在后台。要启动notepad.exe
并使cmd窗口消失,我必须做什么?
编辑:比使用\I
复杂。
cmd
调用cygwin
,cygwin
启动notepad
。start \I \path\cygwin\bin\bash.exe
第一个窗口(cmd)消失了,但是第二个窗口(\cygwin\bin\bash.exe)仍然在后台。在cygwin脚本中,我使用了notepad.exe &
,然后退出。
7条答案
按热度按时间b1uwtaje1#
将
""
放在开始路径和应用程序路径之间。添加说明:
通常,当我们从下面的批处理文件启动程序时,我们会像OP所说的那样在后台显示黑色窗口。
这是由于记事本在同一个命令提示符(进程)中运行。命令提示符将在记事本关闭后关闭。为了避免这种情况,我们可以使用
start
命令启动一个单独的进程,如下所示。只要路径中没有空格,这个命令就可以了,为了处理路径中的空格以防万一,我们添加了
"
引号,如下所示。然而,运行此命令只会启动另一个空白命令提示符。为什么?如果查找
start /?
,start
命令将把"
之间的参数识别为它将要启动的新命令提示符的标题。因此,为了解决此问题,我们使用如下命令:""
的第一个参数是设置标题(我们将其设置为空),"%SystemRoot%\Notepad.exe"
的第二个参数是要运行的目标命令(支持路径中的空格)。如果您需要向命令添加参数,只需将其添加到引号中,即:
ndasle7k2#
使用
start notepad.exe
。更多关于
start /?
的信息。b1zrtrql3#
最简单的方法就是从
start
开始Here您可以找到有关
start
的更多信息mznpcxlj4#
%ComSpec% /c %systemroot%\notepad.exe
oprakyz75#
方法在Xilinx xsdk的情况下对我不起作用,因为正如@jeb在下面的注解中指出的,它实际上是一个bat文件。
所以实际上行不通的是
我正尝试像那样打开xsdk,它会打开一个单独的cmd,需要关闭它,xsdk可以自己运行
在启动xsdk之前,我运行(源代码)Env / Paths(带有 settings64.bat),以便xsdk.bat命令得到识别(简单地作为xsdk,带有 .bat)
wbgh16ku6#
嗯......我在我的一个批处理文件中这样做,没有使用CALL或START:
我没有安装Cygwin虽然我在Windows XP上。
dly7yett7#
如果你想在一个批处理文件中完成所有的事情(按照要求),我使用这个技术。
可以使用“
for /f
”命令从批处理文件中读取数据(并由同一批处理文件使用)。例如,这里我们只读取批处理文件底部的消息文本,并在命令窗口中只回显该文本:
该行:
就是通过玩弄行尾字符(@)并使用裸露的“rem”行后面的空格作为分隔符来完成这项繁重的工作。我称之为“DUYOA.bat”,或“Dissappearing Up Your Own..."。
现在,我们可以扩展相同的原理,以便批处理文件创建一个VBS脚本,该脚本反过来读取批处理文件以创建一个从属批处理文件。
从属批处理文件从原始批处理文件的顶部派生,其中前缀为“
@rem
”。还在听吗别担心我们快到了。
然后,VBS脚本由原始批处理文件启动,并在后台运行从属批处理文件:
如果试图理解它让你头疼,就用下半部分:
向下作为子例程粘贴到您的批处理文件中,并且只需在所有原始命令前加前缀“@rem“。
我将所有的子文件都放到temp目录中,VBS脚本在退出时删除它们(以及它自己)。
你可以放弃日志和所有的评论来简化它,和/或走另一条路,在文件的最后一行添加一个3秒的弹出窗口:
现在,我知道这并不能解决命令窗口 Flink 的问题,但它确实在后台运行批处理文件,而且您不需要像其他答案那样使用单独的VBS脚本。