如何防止执行批处理文件后控制台自动关闭

我可以在批处理文件的末尾放置什么命令来防止在文件执行后自动关闭控制台?

882068 次浏览

在Windows/DOS批处理文件中:

pause

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

或者,如果你不想要"Press any key to continue . . ."消息,可以这样做:

pause >nul

这取决于具体的问题!

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

如果您希望用于cmd . exe不关闭以保持输入,请在文件末尾使用cmd /k命令。

在批处理文件的末尾调用cmd

添加cmd.exe作为你想要执行的代码下面的新行:

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


cmd.exe

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

只是觉得有必要澄清/k是做什么的(来自windows网站):

/k:执行由字符串指定的命令并继续。

因此,在bat文件的末尾没有后续命令的cmd /k将只是保持cmd.exe窗口打开以供进一步使用。

另一方面,批处理文件末尾的pause将简单地暂停进程并在第一次按下按钮时终止cmd.exe

除了# EYZ0。

set /p=

它将期望用户输入,并在按下enter键时释放流。

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

它也会执行相同的操作,只是不会显示用户输入中的任何内容,也不会保留在命令历史记录中。

下面将命令放在批处理文件中的方法将打开新的命令提示窗口,并且新窗口不会自动退出。

start "title" call abcd.exe param1 param2
start "title" call xyz.exe param1 param2
< p >可能性1: 只需要创建两个。bat文件并写入第一个文件:

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

批处理文件2是最后不会关闭的文件。 所以现在当你打开第nr1批时,它会开始第2批,然后自闭。 当第二个结束时,它不会完全关闭(只要你不把退出放在最后)

< p >可能性2: 批处理文件1:

.输出说明
call <filename>
cls
echo End of file
pause
<any code you want>

当第二个文件结束时,它将再次继续文件1并输出剩余的部分。有了它,您甚至可以创建错误处理程序。如果nrr .1崩溃,它会进入nrr .2并显示出来

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

@echo off
cmd /k foo.bat

我发现这在设置一次性环境变量时非常有用。

我知道我迟到了,但我更喜欢这样:

:programend
pause>nul
GOTO programend

这样用户就不能使用enter退出。

根据用例有两种方法

1)如果您希望Windows cmd提示符保持打开状态,以便您可以看到执行结果,然后关闭它;使用

# EYZ0

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

# EYZ0

enter image description here

简单,添加cmd到你的最后一行蝙蝠,但是!如果您重置或清除系统路径,则必须以完整路径启动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

因为我重置了系统路径,所以我必须运行完整路径的cmd,否则系统找不到cmd.exe,它将无法运行cmd,只是关闭窗口,你看不到错误信息。

这个小技巧要求用户输入一个密钥并将其存储到变量%exitkey%(这个变量可以被称为任何你喜欢的名字)。

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

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

pause

echo text to display
pause>nul

如果你正在使用Maven,你想跳过输入并防止控制台关闭来查看结果,你需要在脚本中使用CALL命令,除了'mvn clean install'。

像这样将关闭控制台

ECHO This is the wrong exemple
mvn clean install
pause

像这个控制台将继续开放

ECHO This is the right exemple
CALL mvn clean install
pause

如果你不使用CALL命令,过去的例子都不能工作。因为由于某种原因,cmd在调用另一个批处理文件(在本例中是mvn)时的默认行为本质上是用它替换当前进程,而不像调用.exe

这里的答案有问题,所以我想出了这个,对我来说很有用(TM):

cmd /c node_modules\.bin\tsc
cmd /c node rollup_build.js
pause

cmd /k cd C:\项目.....

如果你想让你的cmd打开在特定的长位置

运行.exe文件,然后暂停cmd

批处理脚本示例:

@echo off
myProgram.exe
PAUSE

带参数的批处理脚本示例:

@echo off
myProgram.exe argumentExample1 argumentExample2
PAUSE

我添加了@echo off,因为我不想在cmd中显示C:\user\Desktop>myProgram.exeC:\user\Desktop>PAUSE

添加暂停(如果你不希望任何其他显示Add) >nul
它应该看起来像:

@echo off
title nice
echo hello
pause >nul

你将看到的是"hello"

我个人把pause >nul,它等待一个键被按下,而不显示任何额外的文本在控制台上。

使用:调用yourbatch.cmd

起作用 将处理脚本,然后继续弹出其他代码在同一窗口(cmd实例)

在程序获得返回值或释放资源之前,您可以在代码的末尾添加getchar ()来阻塞