相关疑难解决方法(0)

For循环中的Errorlevel(批处理窗口)

我有以下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之后.

什么样的答案可能或更好?

windows batch-file errorlevel

22
推荐指数
2
解决办法
3万
查看次数

FOR/F命令循环中的ERRORLEVEL返回意外结果

我正在尝试记录输出,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成功,这也不起作用.

这可能没有临时文件吗?如果没有,临时文件解决方案会是什么样子?

windows cmd batch-file

5
推荐指数
1
解决办法
971
查看次数

标签 统计

batch-file ×2

windows ×2

cmd ×1

errorlevel ×1