有几个必须不断执行的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”的行直接在命令提示符下正确运行。错误在哪里?
我尝试
lua_list包含* .lua脚本的完整路径,一行一行。
答案 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:进行完全匹配。