[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
因为=和,都是参数的分隔符,而for输入的实质是把其中的内容当作参数传递给cmd,所以cmd会先按照参数的划分方式来进行划分
解决方案一:
  1. @echo off
  2. for /f "delims=" %%i in ('wmic logicaldisk where drivetype^=2 get deviceid^,size') do echo %%i
  3. pause>nul
复制代码
解决方案二:
  1. @echo off
  2. for /f "delims=" %%i in ('"wmic logicaldisk where drivetype=2 get deviceid,size"') do echo %%i
  3. pause>nul
复制代码
2

评分人数

TOP

本帖最后由 zm900612 于 2011-5-18 18:48 编辑

刚才考虑了一下,2楼说法欠妥,出错不是出在被cmd划分参数的时候,而是出现在for的预处理时:
  1. for /f "delims=" %%a in ('echo 123,234=345') do echo %%a
  2. pause
复制代码
运行一下就明白了,for预处理时,把即没有被转义又没有被""包起来的分割符转换为空格,然后再传递给cmd,cmd再以%*的方式获取参数,以前没想这么深。

TOP

返回列表