【问题标题】:Check running lua scripts检查正在运行的 lua 脚本
【发布时间】:2018-10-29 20:01:43
【问题描述】:

有几个 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
  • "name like 'lua.exe'" 直接
  • (名称=%EXEC_CMD%)
  • "name=%EXEC_CMD%"

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

【问题讨论】:

    标签: cmd


    【解决方案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 默认处于 reguar 表达式模式 -> 使用 /C: 进行精确匹配。

    【讨论】:

    • 正如我所说,我已经尝试使用“像'lua.exe'这样的名称”。同样的错误
    • @hAh0L13 请参阅上面的更改。
    猜你喜欢
    • 2021-08-19
    • 2012-07-11
    • 2015-06-13
    • 2019-03-10
    • 2010-10-21
    • 2022-12-14
    • 2011-07-12
    相关资源
    最近更新 更多