ChatGPT解决这个技术问题 Extra ChatGPT

BAT文件执行后保持CMD打开

我有一个这样的bat文件:

ipconfig

这会将 IP 信息打印到屏幕上,但在用户读取该信息之前,CMD 会自行关闭。

我相信 CMD 假设脚本已经完成,所以它关闭了。

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

@RobKielty 这是同一个问题,但在这里我们有一个新的答案(恕我直言更好)
@alfasin这与Rutger Nijlunsing的答案不同吗?
@RobKielty 不,我的答案与不使用 pause 不同,这是一个很好的解决方法(这就是我赞成这个答案的原因)但不是真正解决问题的方法,因为在用户点击 EnterSpace 窗口将关闭...

E
ElGavilan

pause 放在 .BAT 文件的末尾。


如果您在执行后仍想与 bat 文件交互,请将 PAUSE 替换为 cmd /k - 然后在您的脚本运行后,您仍然可以在相同的上下文中运行手动命令
M
Mister SirCode

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

cmd /k my_script.bat

只需将 cmd /k 添加到批处理文件的末尾也可以。感谢 Luigi D'Amico 在下面的评论中发布了有关此问题的信息。


在你的 bat 文件中的所有脚本之后 - 放置 --> cmd /k
请注意,如果您的程序包含语法错误,如果您通过双击运行它并将 cmd /k 放在末尾,窗口仍然会关闭。
如果用户双击文件,这并不能解释 cmd 窗口关闭。
这个命令似乎重置了我的 shell。如果在 Windows 上的“Git Bash”外壳(我的 git 安装附带的修改后的 cmd 提示符)中使用它,命令提示符将恢复为标准版本,并且不会记住我输入的命令......是有办法解决这个问题吗?
Z
ZygD

只需在末尾添加 @pause

例子:

@echo off
ipconfig
@pause

或者你也可以使用:

cmd /k ipconfig

@ 符号有什么作用? @pause 和 pause 有区别吗?
@demonicdaron 解释 @ 符号的答案:stackoverflow.com/a/21077142/2258
但在这种情况下,它不应该有任何区别。
@pausepause 之间的区别可以在此答案中直观地看出:stackoverflow.com/questions/17957076#60053224
在这里,它没有任何区别,因为“echo”已经设置为“off”。
Z
ZygD

当 .bat 文件不是从命令行启动时(例如双击)。

echo The echoed text
@pause

https://i.stack.imgur.com/JTmOR.jpg

echo The echoed text
pause

https://i.stack.imgur.com/qu2IC.jpg

echo The echoed text
cmd /k

https://i.stack.imgur.com/TBLon.jpg

echo The echoed text & pause

https://i.stack.imgur.com/8p7hp.jpg


R
RAMM-HDR

在(Windows 7)中添加 pause 对我不起作用
但在我的命令前面添加 cmd /k 确实有效。

例子 :

cmd /k gradlew cleanEclipse

r
robinCTS

start cmd /k 为我创造了奇迹。我实际上用它来准备科尔多瓦 phonegap 应用程序,它运行命令,显示结果并等待用户关闭它。下面是一个简单的例子

start cmd /k echo Hello, World!

我在我的案例中使用了什么

start cmd /k cordova prepare

更新

你甚至可以使用这个标题

start "My Title" echo Hello, World!


J
Julito Sanchis

如果您在命令行中启动脚本,则添加 exit /b 以保持 CMD 处于打开状态


实际上并不能解决问题,因为修改 ipconfig 和其他内置批处理文件是一个非常糟糕的主意
s
samadadi

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


R
RustyCake

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

cmd /k javac my_code.java

所以基本上不需要在当前文件夹打开命令提示符并输入上面的命令,但是您可以直接将此代码保存在您的批处理文件中并直接执行它。


H
Huanfasdawq Huanfasd
javac -d C:\xxx\lib\ -classpath C:\xxx\lib\ *.java

cmd cd C:\xxx\yourbat.bat

第二个命令使您的 cmd 窗口不被关闭。重要的是您仍然可以输入新命令


s
sommmen

作为旁注,这也适用于直接从 Windows 中的搜索栏运行命令。

例如,直接运行 ipconfig 将在命令退出后直接关闭 cmd 窗口。

https://i.stack.imgur.com/JhEBJ.png

使用 cmd \k <command> 不会 - 当我找到这个答案时,这是我试图做的。

https://i.stack.imgur.com/b2PY5.png

它具有始终识别您尝试运行的命令的额外优势。例如,从搜索栏运行 echo hello world 将不起作用,因为这不是命令,但 cmd \k echo hello world 工作正常。