有几个LUA脚本必须不断地执行。为了控制它的状态,我编写了小cmd/批处理文件:
@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“行正确运行。错误在哪里?
我试着
lua_list包含指向*.lua脚本的完整路径,一个逐行。
发布于 2018-10-26 11:58:45
这是你在命令中的双重引用:
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:进行精确匹配。
https://stackoverflow.com/questions/53007127
复制相似问题