如何防止执行batch file后自动closures控制台。

有人可以告诉我,什么命令放在batch file的末尾,以防止执行文件后自动closures控制台?

在Windows / DOSbatch file中:

pause 

这将打印一个很好的"Press any key to continue . . . "消息

或者,如果您不希望"Press any key to continue . . ." 消息,而不是:

 pause >nul 

取决于确切的问题!

通常pause.bat文件中完成这项工作。

如果您希望cmd.exe不能closures以便能够继续input,请在文件末尾使用cmd /k命令。

如果您希望cmd.exe不closures,并且能够继续键入,请使用cmd /k

只是觉得有必要澄清什么/k (从Windows网站):

/k :执行string指定的命令并继续。

所以cmd /k在bat文件的末尾没有跟进命令,只会保持cmd.exe窗口打开供进一步使用。

另一方面,在batch file结束时暂停将暂停进程并在第一次按下button时终止cmd.exe

cmd.exe添加为您要执行的代码下方的新行:

 c:\Python27\python D:\code\simple_http_server.py cmd.exe 

以下batch file中的命令将打开新的命令提示符窗口,新窗口不会自动退出。

 start "title" call abcd.exe param1 param2 start "title" call xyz.exe param1 param2 

在batch file的末尾调用cmd

我的方法是写一个实际的批量(说“foo.bat”)来完成工作; 然后创build另一个“start.bat”:

 @echo off cmd /k foo.bat 

我发现这是非常有用的,当我设置一次性环境variables。

除了pause

 set /p= 

可以使用,它会期望用户input,并在input按下时释放stream量。

要么

 runas /user:# "" >nul 2>&1 

这将做相同的事情,除了用户input的内容不会被显示,也不会保留在命令历史logging中。

可能性1:只需创build2个.bat文件并写入第一个:

 start <filename> // name of 2nd batch file exit 

batch file2是最后不会closures的文件。 所以,现在当你打开批次nr.1它将开始第二和cloe本身。 当第二次完成时,它不会完全closures(只要你不会在最后退出)

可能性2:batch file1:

 call <filename> cls echo End of file pause <any code you want> 

当第二个文件结束时,它将再次进入文件1并输出剩余的文件。 有了这个,你甚至可以做error handling程序。 如果nr.1崩溃,则进入nr.2并显示它

有两种方法可以依赖于用例

1)如果您希望Windows cmd提示保持打开状态,以便您可以查看执行结果并closures它; 使用

pause

2)如果你想让Windows cmd提示符保持打开状态并允许你执行一些命令后缀; 使用

cmd

在这里输入图像描述

很简单,将cmd添加到你的最后一行蝙蝠,但! 如果您重置或清除系统path,则必须使用完整path启动cmd,如:

 %windir%\system32\cmd.exe 

例如,我有一个bat文件将jdk重置为旧版本,如下所示:

 PATH=C:\Program Files\Java\jdk1.6.0_45\bin;C:\apache-ant-1.7.1\bin SET JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45 %windir%\system32\cmd.exe 

因为我重置系统path,我必须运行cmd完整path,或者系统找不到cmd.exe,它将无法运行cmd,只是closures窗口,并且看不到错误消息。

这个小黑客要求用户input一个密钥,并将其存储到variables%exitkey%(尽pipe你可以调用这个variables)。

 set /p exitkey= "Press any key to continue..." 

注意:“=”之后的空格非常重要

types

 pause 

以显示:

 press any key to continue... 

并在按键后窗口closures。 要隐藏命令提示符中显示的文本,请键入

 pause>nul 

我知道我迟到了,但我的预言是这样的:

 :programend pause>nul GOTO programend 

这样用户不能用enter键退出。