在CMD中判断程序是否运行完毕,可以通过以下几种方法:
使用`tasklist`命令结合`findstr`命令
通过`tasklist`命令列出所有当前运行的进程,然后使用`findstr`命令过滤出特定程序的进程。如果`findstr`命令没有输出,说明该程序没有运行;如果有输出,说明程序正在运行。
```cmd
tasklist | findstr "程序名称"
```
检查`%errorlevel%`变量
在CMD中,`%errorlevel%`变量存储了上一个命令的返回值。如果程序运行成功,`%errorlevel%`的值为0;否则,它会有一个非零值。可以通过检查`%errorlevel%`的值来判断程序是否运行完毕。
```cmd
if %errorlevel%==0 (
echo 程序运行成功
) else (
echo 程序运行失败
)
```
使用`for`循环和`tasklist`命令
可以使用一个`for`循环来等待一段时间,然后每次循环检查`tasklist`命令的输出。如果在一定时间内没有找到特定程序的进程,可以认为程序已经运行完毕。
```cmd
for /l %%i in (1,1,10) do (
tasklist | findstr "程序名称" >nul
if %errorlevel%==0 (
echo 程序运行完毕
break
)
timeout /t 1
)
```
使用`BufferedReader`读取进程输出
通过Java或其他编程语言执行CMD命令,并使用`BufferedReader`读取命令的输出。当输出中没有进程名称时,说明程序已经运行完毕。
```java
Process process = Runtime.getRuntime().exec("cmd /c tasklist");
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
int exitCode = process.waitFor();
System.out.println("命令执行完毕,退出码:" + exitCode);
```
使用任务管理器
可以通过按下`Ctrl + Shift + Esc`快捷键打开任务管理器,查看当前运行的所有应用程序和进程。找到特定程序的进程并结束它,也可以认为程序已经运行完毕。
```cmd
taskkill /IM 程序名称.exe /F
```
选择哪种方法取决于具体的需求和环境。如果是在CMD中直接操作,使用`tasklist`和`findstr`命令或检查`%errorlevel%`变量可能更简单直接。如果需要更复杂的控制或与其他编程语言结合,可以使用`BufferedReader`读取进程输出或调用Windows API和WMI。