如何在批处理文件中关闭cmd

时间:2018-03-03 10:08:51

标签: windows batch-file cmd batch-rename cmdlet

start cmd /k 

/ k:必须执行。

启动许多命令提示可以完成如下。

start cmd /k Call rc_hub.bat 4444

start cmd /k Call rc_grid1.bat 5555

start cmd /k Call rc_grid1.bat 6666

start cmd /k Call rc_grid1.bat 5570.

我想知道启动后用于关闭的cmd

例如:if %a="1234" start cmd /k Call rc_grid1.bat - >这是打开cmd,cmd需要关闭什么?

2 个答案:

答案 0 :(得分:0)

关闭多个cmd实例并不是一项非常罕见的任务。 例如,在调试一些复杂的批处理脚本时会出现这种情况。

有一种方法可以做到这一点:
首先,给cmd windows添加唯一标题。例如,

start "unique_title" cmd.exe /k ...

其次,当您要关闭它们时,从任务列表输出中获取与标题匹配的进程ID。然后使用taskkill杀死这些ID。

tasklist /v /fo csv | findstr "unique_title"

以下是完整示例,第一个参数是要匹配的标题子字符串:

<强> kill_title.cmd

@echo off
set TITLE=unique_title
if not "%~1"=="" set "TITLE=%~1"
for /f "tokens=1,2,* delims=," %%a in ('tasklist /fi "imagename eq cmd.exe" /v /fo csv ^| findstr "%TITLE%"') do (
    rem here we check that the first column is "cmd.exe" ... just in case
    if "%%~a"=="cmd.exe" echo taskkill /pid "%%~b"
)

首先检查脚本输出,如果没问题,请在echo之前删除taskkill

答案 1 :(得分:0)

当弄乱命令提示符时,当命令提示符确实失控时,我一直使计算机崩溃。我做了另一个命令提示符,如下所示:

Title END
:End
taskkill /FI "WINDOWTITLE ne END" /IM cmd.exe /F /T
Goto :End

这将强制关闭所有正在运行的命令提示符(不包括此提示符),并将重复执行该命令,直到您将其关闭为止。