我有以下Windows批处理代码:
for %%i in (iidbms iigcc iigcd dmfacp dmfrcp rmcmd qwerty) do (
tasklist | findstr /i %%i
echo %errorlevel%
if %errorlevel% == 0 (echo %%i ok process found %errorlevel%)
if %errorlevel% == 1 (echo %%i no process found %errorlevel%)
)
Run Code Online (Sandbox Code Playgroud)
但它没有像我期望的那样起作用.
所有名称进程iidbms,iigcc,iigcd,dmfacp,dmfrcp,rmcmd都是真实的,并且找到了它们,而qwerty是一个发明的,不应该找到它,所以应该打印"no process found 1",但它不会,它总是打印0.
但我所注意到的是,如果我tasklist | findstr /i qwerty从dos提示符运行,就在有%errorlevel%= 1之后.
什么样的答案可能或更好?
我正在尝试记录输出,net stop同时也捕获它ERRORLEVEL.
基于这个问题,我在嵌套子例程中尝试了以下内容:
set /a loopIndex=0
for /F "usebackq delims=" %%i in (`net stop %SERVICE_NAME%`) do (
if !loopIndex! EQU 0 if !errorlevel! EQU 1 set statementError=1
set /a loopIndex+=1
call :logMessage "%%i"
)
echo statementError: %statementError%
Run Code Online (Sandbox Code Playgroud)
但是,1即使net stop成功,这也不起作用.
这可能没有临时文件吗?如果没有,临时文件解决方案会是什么样子?