繁体   English   中英

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

[英]How to prevent auto-closing of console after the execution of batch file

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

在 Windows/DOS 批处理文件中:

pause

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

或者,如果您不希望"Press any key to continue . . ." 消息,请改为:

pause >nul

取决于确切的问题!

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

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

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

只是觉得有必要澄清/k的作用(来自 Windows 网站):

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

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

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

如果您正在使用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命令,则过去的示例都将不起作用。 因为由于某种原因,调用另一个批处理文件(在这种情况下是 mvn)时 cmd 的默认行为本质上是用它替换当前进程,这与调用 .exe 不同

以下在批处理文件中使用命令的方式将打开新的命令提示符窗口,并且新窗口不会自动退出。

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

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

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

cmd.exe

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

@echo off
cmd /k foo.bat

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

在批处理文件末尾调用cmd

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

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

除了pause

set /p=

可以使用。它会期待用户输入,并在按下输入时释放流程。

或者

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

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

我知道我迟到了,但我首选的方式是:

:programend
pause>nul
GOTO programend

这样用户就不能使用回车退出。

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

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

注意:'=' 后面的空格很重要

可能性 1:只需制作 2 个 .bat 文件并写入第一个文件:

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

批处理文件 2 是最终不会关闭的文件。 因此,现在当您打开批处理 nr.1 时,它将启动第二个并自行关闭。 当第二次完成时,它不会完全关闭(只要你不把退出放在最后)

可能性 2:批处理文件 1:

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

当第二个文件结束时,它将再次进入文件 1 并输出其余部分。 有了它,您甚至可以制作错误处理程序。 如果 nr.1 崩溃,它会进入 nr.2 并显示它

有两种方法可以做到这一点取决于用例

1)如果您希望Windows cmd提示保持打开,以便您可以看到执行结果并在之后关闭它; 利用

pause

2)如果您希望 Windows cmd 提示符保持打开状态并允许您执行一些命令后缀; 利用

cmd

在此处输入图像描述

pause

或者

echo text to display
pause>nul

简单,将 cmd 添加到你的最后一行 bat,但是! 如果您重置或清除系统路径,则必须使用完整路径启动 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失败,直接关闭窗口,看不到错误信息.

运行 .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

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

cmd /k cd C:\Projects.....

如果您希望您的 cmd 在特定的长位置打开

添加暂停(如果您不想显示其他任何内容,请添加)>nul
它应该看起来像:

@echo 关闭
标题不错
回声你好
暂停>无

你将看到的只是“你好”

我个人将pause >nul设置为等待按下一个键而不在控制台中显示任何额外的文本。

使用:调用 yourbatch.cmd

这项工作是否会处理脚本,然后继续在同一 window(cmd 实例)上弹出其他代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM