批处理文件不会杀死进程并关闭控制台窗口

Posted

技术标签:

【中文标题】批处理文件不会杀死进程并关闭控制台窗口【英文标题】:Batch file won't kill process and close console window 【发布时间】:2018-05-18 22:53:43 【问题描述】:

批次对我来说是个谜。这是情况。我使用鼠标宏程序创建了一个自动点击我的屏幕的 .exe。我想通过将它添加到我的任务计划程序来自动化它。这是程序创建的代码:

@echo off
REM ************ Built by MiniMouseMacro.exe **********
cls
mode con lines=11 cols=115
title=Mini Mouse Macro - Turnssoft.com
color 0A
echo * Mini Mouse Macro *
echo   - "C:\Users\John Doe\Desktop\MiniMouseMacro.exe" /m "C:\Users\John Doe\Desktop\TestKlik.mmmacro"
echo   - Running C:\Users\John Doe\Desktop\TestKlik.mmmacro...
"C:\Users\John Doe\Desktop\MiniMouseMacro.exe" /m "C:\Users\John Doe\Desktop\TestKlik.mmmacro"

它打开宏程序,加载宏文件(.mmmacro)并执行。这行得通。但是,它使控制台窗口保持打开状态+使宏程序保持打开状态(鼠标单击会打开一个新程序,控制台窗口可能会失去焦点还是什么?)。我尝试通过将其添加到脚本来解决此问题:

echo   - killing process
taskkill /im "MiniMouseMacro.exe" /f
end

但是什么也没发生。我怎样才能使这个脚本工作,也可能使它看起来更干净(我不需要所有的文本输出)。

【问题讨论】:

【参考方案1】:

当您运行程序时,cmd 将等待程序完成后再继续。要更改此设置,请在启动鼠标程序时使用start 命令。

cd "C:\Users\John Doe\Desktop\"
start "" "MiniMouseMacro.exe /m TestKlik.mmmacro"

这将允许您使用 taskkill 关注它

【讨论】:

添加一个timeout -t 2 让exe有机会做,在你杀死它之前它应该做什么。 这行得通,谢谢。超时也是一个非常受欢迎的补充。

以上是关于批处理文件不会杀死进程并关闭控制台窗口的主要内容,如果未能解决你的问题,请参考以下文章

杀死特定的java应用程序[关闭]

macOS-代码调用Terminal执行脚本或者杀死进程窗口

cmd批处理bat命令根据端口号一键关闭杀死对应进程程序

当我在批处理文件中运行下面的代码时,它只会执行第一行并且不会关闭命令窗口

Vegas Pro 17.0的假后台进程bug 与解决方案

批处理文件或Powershell杀死进程[重复]