标题: [系统相关] [已解决]批处理在 in ('xxx') 输入命令的时候 命令包含""怎么办? [打印本页]
作者: missll 时间: 2012-8-7 11:33 标题: [已解决]批处理在 in ('xxx') 输入命令的时候 命令包含""怎么办?
目的 :
我想获取一个服务的状态 如果命令是停止状态 则 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 ('命令') 中如果碰到需要加"的时候怎么解决呢?
作者: cutebe 时间: 2012-8-7 12:40
加^
'sc query pcapsvc^|find /i "STATE"'
或
外加一层引号
'"sc query pcapsvc|find /i "STATE""'
作者: missll 时间: 2012-8-7 13:02
回复 2# cutebe
谢谢 谢谢 谢谢 ,按你所说再外加一层括号就可以了 。
in ('"sc query pcapsvc|find /i "STATE""')
作者: qzwqzw 时间: 2012-8-7 14:27
尽量不要使用双层双引号
如果STATE这个词带上空格或其它特殊字符
则会出现不可预知的错误
作者: missll 时间: 2012-8-7 16:08
回复 4# qzwqzw
多谢指点~~
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |