以上代码提示错误 attempt to index local 'handle' (a nil value)
时间: 2023-12-13 15:04:48 浏览: 136
Lua 错误处理
非常抱歉,之前的代码确实有问题。io.popen函数在执行失败时会返回nil,因此需要在调用之后进行nil判断。以下是修正后的代码:
```lua
-- 定义要关闭的进程名
local processName = "中心服务器"
-- 调用tasklist命令获取所有进程信息
local handle = io.popen("tasklist /v /fo csv")
if handle then
-- 读取命令输出结果,并解析出包含指定窗口标题的进程
local result = handle:read("*a")
local pid, windowTitle = string.match(result, '([^,]+),"([^"]*)",[^,]*,[^,]*,[^,]*,[^,]*,"' .. processName .. '"')
if pid and windowTitle then
-- 如果找到了包含指定窗口标题的进程,使用taskkill命令关闭该进程
print("找到进程 " .. pid .. ",标题为 " .. windowTitle)
os.execute("taskkill /f /pid " .. pid)
print("进程已关闭")
else
print("未找到进程 " .. processName)
end
-- 关闭命令输出流
handle:close()
else
print("无法执行命令")
end
```
在调用io.popen函数后,首先进行了nil判断,如果返回值为nil则说明命令执行失败。如果返回值非nil,则继续解析命令输出结果,如果找到了符合条件的进程则执行关闭命令,最后关闭命令输出流。
阅读全文