Cmd 检查正在运行的lua脚本

Cmd 检查正在运行的lua脚本,cmd,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

有几个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
)
)
执行时,返回“get此时意外”

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

我试着用

  • errorlevel==1
  • 直接使用“类似于'lua.exe'的名称”
  • (名称=%EXEC\u CMD%)
  • “名称=%EXEC\u CMD%”

lua_列表包含*.lua脚本的完整路径,一行一行

这是您在命令中的双引号:

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:进行精确匹配。

正如我所说,我已经尝试使用“像‘lua.exe’这样的名称”。相同的error@hAh0L13请参见上面的更改。