目的 :
我想获取一个服务的状态 如果命令是停止状态 则 SC START SRV, 如果服务是启动状态 则 SC STOP SRV- C:\>sc query pcapsvc
-
- SERVICE_NAME: pcapsvc
- TYPE : 10 WIN32_OWN_PROCESS
- STATE : 1 STOPPED
- (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN))
-
- WIN32_EXIT_CODE : 0 (0x0)
- SERVICE_EXIT_CODE : 0 (0x0)
- CHECKPOINT : 0x0
- WAIT_HINT : 0x0
复制代码
- C:\>sc query pcapsvc |find /i "STATE"
- STATE : 1 STOPPED
复制代码 目前我这样写:- for /f "tokens=3 " %%a in ('sc query pcapsvc|find /i "STATE"') do (
- if %%a ==1 sc start pcapsvc
- if %%a ==4 sc stop pcapsvc)
复制代码 因为命令格式不对 "STATE"' 所以直接就报错了,于是我只能先把服务的状态写到文件- @echo off
- sc query pcapsvc|find /i "STATE" >%temp%\pcapsvc.tmp
- for /f "tokens=3 " %%a in ('type %temp%\pcapsvc.tmp') do (
- if %%a ==1 sc start pcapsvc>nul
- if %%a ==4 sc stop pcapsvc>nul)
复制代码 这样就实现目的了,但是没有从根本上解决在 in ('命令') 中如果碰到需要加"的时候怎么解决呢? |