批处理怎样关闭其他的 批处理 (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掉这样的进程
这段代码应该不难把,你能帮我写一下吗? 展开
有一个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掉这样的进程
这段代码应该不难把,你能帮我写一下吗? 展开
5个回答
展开全部
你把要结束的批处理加个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
展开全部
让它自己关闭自己就成了
你看看是不是你要的效果
::我也尝试做了一下
::两个文件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跳转。
建议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 好了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
TASKKILL /F /IM cmd.exe /T
这个命令可以关闭所有cmd窗口。
这个命令可以关闭所有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打开后立即关闭,你可以按照实际情况使用。
其实,最好你贴一下你的代码,才能更好的给出方案。
举例:
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的方法就不用考虑了~~
能否将你的目的说的更清楚一点呢?最好能具体到你实际的做法,比如你手动去完成这个动作是如何做的,然后再通过设计批处理来实现。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询