[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 数据库自动巡检批处理嵌套for变量疑问

新手编数据库自动巡检脚本,请各位大侠帮忙,万分感谢!
  1. @echo off
  2. setlocal DisableDelayedExpansion
  3. rem setlocal EnableDelayedExpansion
  4. for /f %%i in ('db2ilist') do (
  5.   echo %%i
  6.   for /f "tokens=1" %%s in ('wmic service get Name^, PathName ^| findstr db2sysc') do (
  7.     echo %%s
  8.     set n=%%s
  9.     echo %n%
  10.     if %%s == %%i (
  11.       echo Exist
  12.       echo ---
  13.     ) else (
  14.       echo Not
  15.       echo ---
  16.     )
  17.   )
  18.   echo ***
  19. )
复制代码
说明
1、db2ilist的返回值为如下2行:
DB2INST1
DB2
2、wmic service get Name, PathName | findstr db2sysc 的返回值为如下2行(不足10位后面补的空格):
DB2-0     
DB2INST1  
功能:判断进程对应的service服务是否已启动。
当前输出效果
DB2INST1
DB2-0
DB2INST1
Not
---
DB2INST1
DB2INST1
Exist
---
***
DB2
DB2-0
DB2INST1
Not
---
DB2INST1
DB2INST1
Not
---
***
问题:
1、输出的第16行应该是DB2,为什么成了DB2INST1 ?
2、echo %n%输出的3、7、13、17行,为什么全不对?
3、set n=%%s这行我想将-0换成空,这样写为什么不对 set n=%%s:-0=
4、代码第10行我是想这样写if %n% == %%i (  ,为什么这样后少了4个echo。
5、求正确的第8和第10行代码。

你的代码有问题的地方比较多,先试试下面这个代码和你的实际需求有哪些差异。

@echo off
setlocal EnableDelayedExpansion
for /f %%i in ('db2ilist') do (
  echo %%i
  for /f "tokens=1" %%s in ('wmic service get Name^, PathName ^| findstr db2sysc') do (
    echo %%s
    set n=%%s
    echo !n!
    if %%s == %%i (
      echo Exist
      echo ---
    ) else (
      echo Not
      echo ---
    )
  )
  echo ***
)
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

结果正确,但第3个问题我还是不会处理。

TOP

回复 3# taosicai


@echo off
setlocal EnableDelayedExpansion
for /f %%i in ('db2ilist') do (
  echo %%i
  for /f "tokens=1" %%s in ('wmic service get Name^, PathName ^| findstr db2sysc') do (
    echo %%s
    set n=%%s
    set n=!n:-0=!
    echo !n!
    if %%s == %%i (
      echo Exist
      echo ---
    ) else (
      echo Not
      echo ---
    )
  )
  echo ***
)
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

返回列表