批处理怎样关闭其他的 批处理 (cmd)窗口,而不结束本身

其实需求是有一个run.bat和kill.bat我用在run.bat里执行了某个(程序)进程,然后在kill.bat结束掉该进程,问题是进程kill掉程序以后,run.b... 其实需求是
有一个run.bat和kill.bat

我用在 run.bat里执行了某个(程序)进程,然后在kill.bat结束掉该进程,问题是进程kill掉程序以后,run.bat出现的窗口 还在。。。。
怎么能关掉?
如果kill cmd.exe 就都结束了
kill.bat的目的 就是为了 不断的启动、关闭 run.bat。当然,最终的目的 是启动、关闭 run.bat所运行的程序

怎么弄?
===============
可能我没说清楚,这样,我把问题具体一下:
首先,我启动一个批处理窗口(cmd进程),比如kill.bat,并获取本身进程的pid 记录下来(赋值给变量),为了简单起见,可以假设启动的时候 没有其他的cmd 进程
然后,我会在bat里使用start启动其他的 cmd进程
最后,我要杀掉除了kill.bat其他的 cmd,因为我事先记下了 kill.bat的pid,所以,我可以
tasklist | finstr "cmd.exe" && 进程的pid != kill.bat的pid ,然后kill掉这样的进程

这段代码应该不难把,你能帮我写一下吗?
展开
 我来答
风与雨的故事
推荐于2017-11-26 · TA获得超过405个赞
知道小有建树答主
回答量:359
采纳率:80%
帮助的人:245万
展开全部
 
你把要结束的批处理加个title,结束掉就行。不用那么复杂吧
title 运行
TASKKILL /F /FI "WINDOWTITLE eq 运行*"
就两句,一个文件加进去一句,就行。无语


下面是直接操作程序

@echo off
:back
:::这里notepad.exe是你的程序,路径要写全
start /max "" "notepad.exe"
ping -n 6 127.0.0.1>nul
:::这里notepad.exe是你的程序,路径不要写
TASKKILL /F /IM notepad.exe
ping -n 2 127.0.0.1>nul
goto back

hellohfjdufbf
2015-02-17 · TA获得超过967个赞
知道小有建树答主
回答量:303
采纳率:100%
帮助的人:60.6万
展开全部

让它自己关闭自己就成了

你看看是不是你要的效果

::我也尝试做了一下
::两个文件run.bat 和 kill.bat
::
::打开kill.bat后可以看到连续打开了notepad.exe 并结束notepad.exe
::
::
::run.bat部分
@start "" /b /normal notepad.exe && exit
::
::
::kill.bat部分
@echo off
for /L %%i in (1,1,5) do (
start "" /b /wait /normal run.bat && ^
ping /n 1 127.0.0.1 >nul && ^
taskkill /f /fi "IMAGENAME eq notepad.exe"
)
pause
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-02-27
展开全部
建议1:写个小程序,里面两个功能按钮,分布对应run和kill;
建议2:只写一个bat来运行,但是过程中要求输入参数,分别对应运行和关闭;
建议3:换用windows的script脚本编写

第二种方法比较适合你, if和goto跳转。
追问
你看一下 我的补充,bat的代码 我只知道一点,你能帮我写下吗?
追答
范例:

@echo off
color 0b
mode con cols=80 lines=25
echo **************************************
echo. 关机
echo **************************************
echo 请选择要进行的操作,并按回车:
echo 1.运行
echo 2.关闭
echo 3.退出
echo.

:ks
set /p choice=请选择:
if /i %choice%==1 goto run
if /i %choice%==2 goto kill
if /i %choice%==3 goto end
echo 输入无效请重新输入.
goto ks

:run
echo 运行服务
你的运行程序的语句
goto ks

:kill
echo 关闭服务:
你的关闭程序的语句
goto ks

:end
exit

以上范例就是开一个窗口,这个窗口运行后一直开着等你输入选择。 如果你不想一直开着,那么不管run还是kill,不要goto ks,直接goto end 好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kkillala
2017-08-25 · TA获得超过473个赞
知道答主
回答量:98
采纳率:0%
帮助的人:38.3万
展开全部
TASKKILL /F /IM cmd.exe /T

这个命令可以关闭所有cmd窗口。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-02-27
展开全部
得看run.bat中调用程序的方式,如果是使用start运行程序,那你结束这个程序进程,run.bat是不会关闭的;反之,关闭进程,run.bat也会自动关闭。
举例:
1、关闭进程将会关闭run.bat的写法:
@echo off
D:\QQ\QQ.exe

2、关闭进程,run.bat依然存在的写法:
@echo off
start “” D:\QQ\QQ.exe

Ps:如果2个代码最后都加入 exit 退出语句,第1种的CMD窗口将会等待QQ.exe被结束才关闭。而第二种则会在QQ.exe打开后立即关闭,你可以按照实际情况使用。

其实,最好你贴一下你的代码,才能更好的给出方案。
更多追问追答
追问
这几个回答好像就你弄明白我的意思了。
我现在也不讨论什么方法了,就是求一段代码:
第一步:启动一个cmd进程 并获取本身进程的pid赋给一个变量
第二步:start 其他的cmd,这个就是命令,倒是不需要什么代码
第三步:kill掉 所有cmd,除了第一个启动的已经记录了pid的那一个
因为已经记住了pid,所以应该很容易判断

这么说明白了吗?就是求这段代码就行了
追答
你的想法实现存在问题,首先变量只在当前批处理中有效,关闭后就清零了,除非写入临时文件。另外,每次执行的pid是不一样的,具体你可以试试2次打开几个文本文档,去查看pid就知道了。
所以pid的方法就不用考虑了~~

能否将你的目的说的更清楚一点呢?最好能具体到你实际的做法,比如你手动去完成这个动作是如何做的,然后再通过设计批处理来实现。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式