1

我有一个类似的批处理文件程序。

@echo off
start Mat.exe
>>Need a code here to runand check for termination of "Mat.exe"
rundll32.exe user32.dll, LockWorkStation

>>end of program

如果有人可以帮助我设置程​​序,以便我可以在“Mat.exe”文件终止后立即锁定我的计算机。我真的很感激。提前致谢

4

2 回答 2

5

只需删除start之前的,Mat.exe这样您的批处理文件就会等到Mat.exe完成。

编辑:这仅在您Mat.exe在控制台或类似设备中运行时才有效。如果丢弃start不起作用,您可能必须检查Mat.exe是否仍在运行。为此,我发现了一篇非常有用的帖子,它应该对您有用:如何等待进程终止以在批处理文件中执行另一个进程

编辑2:完整代码:

@echo off
:LOOP
start Mat.exe
TASKLIST 2>&1 | find "Mat.exe" > nul
IF ERRORLEVEL 1 (
  rundll32.exe user32.dll, LockWorkStation
) ELSE (
  SLEEP 3
  GOTO LOOP
)

您可以随意调整SLEEP,但我建议至少使用 1 秒,否则您将获得 100% 的使用率。

于 2013-09-27T11:10:39.000 回答
1

尝试使用带有 /Wait 开关的 Start 命令。这是一个例子:

@echo off 
REM //start Mat.exe
start /wait [path of Mat.exe]
rundll32.exe user32.dll, LockWorkStation

请记住使用 8.3 文件名,并且不要在路径字符串中包含 (" ")

于 2013-09-29T01:37:49.263 回答