检查正在运行的lua脚本

时间:2018-10-26 10:52:36

标签: cmd

有几个必须不断执行的LUA脚本。为了控制其状态,我编写了一个小的cmd / batch文件:

@echo off
setlocal enableextension enabledelayedexpansion
set LIST=C:\123\lua_list
set EXEC_CMD="lua.exe"

for /f %%a in (%LIST%) do (
wmic process where "name like '%EXEC_CMD%'" get commandline | findstr /i %%a > nul
if errorlevel 1 (
echo down
) else (
echo up
)
)

执行后,返回“此时无法获得”

带有“ wmic”的行直接在命令提示符下正确运行。错误在哪里?

我尝试

  • 错误级别== 1
  • 直接输入“ lua.exe之类的名称”
  • (名称=%EXEC_CMD%)
  • “名称=%EXEC_CMD%”

lua_list包含* .lua脚本的完整路径,一行一行。

1 个答案:

答案 0 :(得分:1)

这是命令中的双引号:

set EXEC_CMD="lua.exe"

计算结果为:

wmic process where "name like '"lua.exe"'" get commandline 

双引号过多。

将批次更改为
使用条件执行来编辑新版本

:: Q:\Test\2018\10\26\SO_53008258.cmd

@echo off & setlocal enableextensions enabledelayedexpansion
set "LIST=C:\123\lua_list"
set "EXEC_CMD=lua.exe"

for /f %%a in (%LIST%) do (
    wmic process where "name like '%EXEC_CMD%'" get commandline|findstr /i /c:"%%~a" >nul 2>&1 && (
        echo %%a up) || ( echo %%a down)
)

此处使用firefox.exe而不是lua.exe成功进行了测试。
默认情况下,findstr在常规表达式模式下->使用/ C:进行完全匹配。