标题: [文本处理] 数据库自动巡检批处理嵌套for变量疑问 [打印本页]
作者: taosicai 时间: 2015-6-17 18:16 标题: 数据库自动巡检批处理嵌套for变量疑问
新手编数据库自动巡检脚本,请各位大侠帮忙,万分感谢!- @echo off
- setlocal DisableDelayedExpansion
- rem 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 ***
- )
复制代码
说明:
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行代码。
作者: gawk 时间: 2015-6-17 18:52
你的代码有问题的地方比较多,先试试下面这个代码和你的实际需求有哪些差异。
@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 ***
)
作者: taosicai 时间: 2015-6-18 10:44
结果正确,但第3个问题我还是不会处理。
作者: gawk 时间: 2015-6-18 13:13
回复 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 ***
)
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |