找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 20617|回复: 4

[系统相关] [已解决]批处理在 in ('xxx') 输入命令的时候 命令包含""怎么办?

[复制链接]
发表于 2012-8-7 11:33:32 | 显示全部楼层 |阅读模式
目的 :
我想获取一个服务的状态 如果命令是停止状态 则 SC START SRV, 如果服务是启动状态 则 SC STOP SRV
  1. C:\>sc query pcapsvc

  2. SERVICE_NAME: pcapsvc
  3.         TYPE               : 10  WIN32_OWN_PROCESS
  4.         STATE              : 1  STOPPED
  5.                                 (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN))

  6.         WIN32_EXIT_CODE    : 0  (0x0)
  7.         SERVICE_EXIT_CODE  : 0  (0x0)
  8.         CHECKPOINT         : 0x0
  9.         WAIT_HINT          : 0x0
复制代码
  1. C:\>sc query pcapsvc |find /i "STATE"
  2.         STATE              : 1  STOPPED
复制代码
目前我这样写:
  1. for /f "tokens=3 " %%a in ('sc query pcapsvc|find /i "STATE"') do (
  2. if %%a ==1 sc start pcapsvc
  3. if %%a ==4 sc stop pcapsvc)
复制代码
因为命令格式不对 "STATE"' 所以直接就报错了,于是我只能先把服务的状态写到文件
  1. @echo off
  2. sc query pcapsvc|find /i "STATE" >%temp%\pcapsvc.tmp
  3. for /f "tokens=3 " %%a in ('type %temp%\pcapsvc.tmp') do (
  4. if %%a ==1 sc start pcapsvc>nul
  5. if %%a ==4 sc stop pcapsvc>nul)
复制代码
这样就实现目的了,但是没有从根本上解决在 in ('命令') 中如果碰到需要加"的时候怎么解决呢?

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2012-8-7 12:40:51 | 显示全部楼层
加^
'sc query pcapsvc^|find /i "STATE"'


外加一层引号
'"sc query pcapsvc|find /i "STATE""'

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2012-8-7 13:02:09 | 显示全部楼层
回复 2# cutebe


    谢谢 谢谢  谢谢 ,按你所说再外加一层括号就可以了 。

in ('"sc query pcapsvc|find /i "STATE""')
发表于 2012-8-7 14:27:09 | 显示全部楼层
尽量不要使用双层双引号
如果STATE这个词带上空格或其它特殊字符
则会出现不可预知的错误
 楼主| 发表于 2012-8-7 16:08:46 | 显示全部楼层
回复 4# qzwqzw


    多谢指点~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 10:12 , Processed in 0.020137 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表