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

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

目的 :
我想获取一个服务的状态 如果命令是停止状态 则 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 ('命令') 中如果碰到需要加"的时候怎么解决呢?
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2
花开不问月,不语笑红尘.

回复 4# qzwqzw


    多谢指点~~
花开不问月,不语笑红尘.

TOP

尽量不要使用双层双引号
如果STATE这个词带上空格或其它特殊字符
则会出现不可预知的错误
天的白色影子

TOP

回复 2# cutebe


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

in ('"sc query pcapsvc|find /i "STATE""')
花开不问月,不语笑红尘.

TOP

加^
'sc query pcapsvc^|find /i "STATE"'


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

评分人数

如无特别说明,代码测试环境均为 XP SP3

TOP

返回列表