Board logo

标题: [其他] 批处理WMIC中一个空格的区别 [打印本页]

作者: lxzzr    时间: 2009-4-13 10:19     标题: 批处理WMIC中一个空格的区别

先看段代码:
  1. @echo off
  2. for /f "usebackq skip=1 delims=" %%i in (
  3. `"wmic path Win32_Service where name^='alg' get StartMode"`
  4. ) do (
  5. echo %%i
  6. )
  7. pause>nul
复制代码


这个没有什么问题,正确显示了:Disabled

再看个:
  1. @echo off
  2. for /f "usebackq skip=1 delims=" %%i in (
  3. `"wmic path Win32_Service where name ^='alg' get StartMode"`
  4. ) do (
  5. echo %%i
  6. )
  7. pause>nul
复制代码


结果显示:无效动词。

这个是怎么回事呢?是转义字符^引起的吗?
作者: leaparde    时间: 2009-4-13 11:13

  1. wmic path Win32_Service where name='alg' get StartMode
复制代码
单独用此语句测试,在等号前不加空格显示成功,加了空格之后提示无效动词,应该与转义字符无关。
作者: zqz0012005    时间: 2009-4-13 11:30

不放在for中也一样。下面会出现同样的错误:
wmic path Win32_Service where name ='alg' get StartMode
wmic path Win32_Service where name = 'alg' get StartMode
可能是wmic对语法要求比较严格。
作者: zqz0012005    时间: 2009-4-13 11:32

我刚刚看到没人发帖啊,怎么我才发就看到有了,时间还是11:13  ?
作者: zqz0012005    时间: 2009-4-13 12:29

将where从句括起来就没问题了:
  1. wmic path Win32_Service where (name = 'alg') get StartMode
  2. wmic path Win32_Service where "name = 'alg'" get StartMode
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2