有没有办法可以让程序在关闭时重新打开?
我有这个程序运行;它会弹出一个;当你按下它然后关闭程序。我知道我可以用批处理启动任何可执行文件,但是当它检测到程序已关闭时,如何让它自己运行?
我可以使用以下代码启动程序:
@echo off
start "" "C:\Program Files (x86)\Winstep\WinstepXtreme.exe"
但我想在WinstepXtreme.exe
终止时启动此批处理文件。
更新:好的所以建议的代码可以工作,但是它的激活不停止使PC无法做某些事情,同时cmd窗口保持opne但我修复了。在我的进程列表中有两个文件:Nextstart.exe和Workshelf.exe,不确定是否有可以键入的代码命令,如果“workshelf.exe”已发送存在然后启动workshelf.exe?如果不存在“%ProgramFiles(x86)%”转到???
----------> [溶液]< ----------
@echo off
:重新启动 启动“编辑文本”/等待“C:\ Program Files(x86)\ Winstep \ WorkShelf.exe”
转到重启
添加workshelf.exe而不是winstep使其稳定,winstep exe启动a)下一次启动和b)工作架,只需要workhelf重启但我可以添加多个目录的东西,如果关闭则重启。
答案 0 :(得分:3)
一个简单的解决方案是
@echo off
:Restart
start "Winstep Xtreme" /wait "C:\Program Files (x86)\Winstep\WinstepXtreme.exe"
goto Restart
批处理文件始终保持打开状态。只要Winstep Xtreme正在运行,就会暂停执行批处理文件。一旦此应用程序终止,批处理文件的执行将继续,再次启动 Winstep Xtreme 。
您希望不要仅使用此批处理文件来解决 Winstep Xtreme 试用版的限制。
答案 1 :(得分:0)
将cmd.exe的实例调整为您要监视的.exe并重新启动
@ECHO OFF
(
ECHO Set objWMIService = GetObject ("winmgmts:"^)
ECHO Set proc = objWMIService.ExecQuery("select * from Win32_Process Where Name='cmd.exe'"^)
ECHO DO while proc.count ^> 0
ECHO Set proc = objWMIService.ExecQuery("select * from Win32_Process Where Name='cmd.exe'"^)
ECHO if proc.count ^< 1 then exit do
ECHO wscript.sleep 5000
ECHO loop
ECHO Set WshShell=createobject("wscript.shell"^)
ECHO WshShell.run "cmd.exe", 1, true
ECHO WshShell.run "%~0", 0, false
) >%TEMP%\MonitorEXE.vbs
Start %TEMP%\MonitorEXE.vbs
mshta vbscript:msgbox("cmd.exe launched. Monitoring active.",0,"Notification")(window.close)
exit
此批处理将创建一个vbs脚本来监视该进程,并在不存在该进程实例的情况下自动重新启动该脚本。如果必须重新启动流程,则会创建一个消息框来通知已发生的消息,然后调用批处理文件以重新启动vbs Montior。
批处理将以静默方式运行(在初始启动后),并关闭,直到再次需要重新启动.exe为止。 仅显示通知。
强烈建议在监视vbs中使用“睡眠”,因为它可以大大减少调用WMI提供程序主机所涉及的CPU使用率