BAT文件执行后保持CMD窗口打开

255

我有一个像这样的批处理文件:

ipconfig

这将在屏幕上打印IP信息,但在用户阅读该信息之前CMD窗口会自动关闭。

我认为CMD假定脚本已经完成,所以它才会关闭。

在脚本完成后如何保持CMD窗口打开?


1
阻止批处理文件自动关闭。 - Rob Kielty
5
“@RobKielty,这是相同的问题,但现在我们有一个新答案(我认为更好)。” - Nir Alfasi
1
可能是重复的问题:如何在打开.bat文件脚本后保持cmd运行 - Endoro
@alfasin 这不是与Rutger Nijlunsing的答案相同吗? - Rob Kielty
@RobKielty 不,我的答案不一样,因为它没有使用“暂停”命令,这是一种不错的解决方法(这也是我点赞这个答案的原因),但并不能真正解决问题,因为用户按下“Enter”或“Space”键后窗口将关闭... - Nir Alfasi
11个回答

338

在你的 .BAT 文件末尾添加 pause


13
如果你在执行完批处理文件后仍想与其进行交互,可以将PAUSE替换为cmd /k - 然后在脚本运行完成后,你仍可以在相同的环境中运行手动命令。 - Luigi D'Amico
如果最后一个命令失败,暂停命令将无法生效。作为一种解决方法,可以在最后一个命令之前使用“call”命令来确保暂停命令能够正常工作。 - undefined

239

根据您运行命令的方式,在 cmd 后面加上 /k 可以保持窗口打开。

cmd /k my_script.bat

只需要在批处理文件的末尾添加cmd /k,也可以起到同样的作用。感谢Luigi D'Amico 在下面的评论中发表了相关内容。


23
在你的批处理文件中所有脚本之后,添加 --> cmd /k。 - Luigi D'Amico
9
请注意,如果您的程序存在语法错误,并且通过双击运行并在结尾处添加 cmd /k,窗口仍将关闭。 - Tobias Feil
2
这并没有解释如果用户双击文件,cmd窗口为什么会关闭。 - basickarl
这个命令似乎重置了我的shell。如果在Windows上使用它在“Git Bash” shell(随同我的git安装的修改后的cmd提示符)中,那么命令提示符会恢复为标准版本,并且不会记住我输入的命令... 是否有办法解决这个问题? - TheBaum

75

只需在结尾处添加@pause

例如:

@echo off
ipconfig
@pause

或者你也可以使用:

cmd /k ipconfig

6
@符号有什么作用?@pause和pause有什么区别? - Kappacake
4
@符号的解释:在互联网中,@符号通常用作标记其他用户或实体的方式。在Twitter中,@符号后面跟着用户名将其提到,而在其他社交媒体平台和电子邮件中,@符号通常用于标记某人或组织以引起他们的注意。在编程语言中,@符号也用于访问对象的属性或方法。 - Richard Morgan
1
但在这种情况下,它不应该有任何影响。 - Florian Leitgeb
2
@pausepause之间的区别可以在这个答案中通过视觉方式看到:https://dev59.com/2GMl5IYBdhLWcg3w_rKD - ZygD
2
这里没有任何区别,因为“echo”已经设置为“off”。 - Daniel K.

27

当以非命令行方式(例如双击)启动 .bat 文件时。

echo The echoed text
@pause

at_pause

echo The echoed text
pause

pause

echo The echoed text
cmd /k

cmd k

echo The echoed text & pause

and_pause


11

在(Windows 7)末尾添加 pause 对我没有起作用,但在我的命令前加上 cmd /k 是有效的。

示例:

cmd /k gradlew cleanEclipse

6

start cmd /k 对我非常有用。我实际上是在准备 Cordova PhoneGap 应用时使用它运行命令,显示结果并等待用户关闭它。以下是一个简单的示例:

start cmd /k echo Hello, World!

我在我的情况下使用了什么

start cmd /k cordova prepare

更新

你可以通过以下方式为此添加标题:

start "我的标题" echo 你好,世界!


该段文字涉及IT技术相关内容,建议您在使用前进行进一步了解。

2
在Windows中,在文件的命令末尾添加“& Pause”。

1
如果您在命令行中启动脚本,则需要添加 exit /b 以保持 CMD 打开。

实际上并不能解决问题,因为修改ipconfig和其他内置批处理文件是一个非常糟糕的想法。 - robinCTS

1
我也很困惑为什么我们要在开头添加cmd,我想知道是否需要先打开命令提示符。 你需要输入完整的命令,包括cmd /k。例如,假设您的批处理文件名为“my_command.bat”,运行命令javac my_code.java,那么批处理文件中的代码应该是:
cmd /k javac my_code.java

所以基本上没有必要在当前文件夹打开命令提示符并键入上述命令,而是可以直接将此代码保存在批处理文件中并直接执行它。

0
javac -d C:\xxx\lib\ -classpath C:\xxx\lib\ *.java

cmd cd C:\xxx\yourbat.bat

第二个命令可以让你的CMD窗口不被关闭。 重要的是,你仍然能够输入新的命令。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接