[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
原帖由 sgaizxt001 于 2010-1-25 01:55 发表
经过测试,变量取值完全正确,那么问题出现在哪呢?代码2的循环操作跟代码1的完全一样,而且对于两个for语句来说,变量取得都没错啊,这到底为什么呢?

其实,变量取值已经出错了
  1. for /f "delims=- tokens=1,2,3" %%i in (a.txt) do echo %%i %%j %%for /f "delims=-  tokens=1,2,3" %%i in (a.txt) do echo %%i %%j
复制代码
两个for语句的结果完全一样,也就是说%%k根本就取不到值。
个人理解,delims最好放在最后面。如果delims之后还有其他语句,例如tokens和skip,一旦分隔符中有空格,for语句都会理解成delims与其他语句的间隔。
  1. for /f "delims= - tokens=1,2,3" %%i in (a.txt) do echo %%i %%j %%k
复制代码
for语句会认为没有分隔符,但是- tokens=1,2,3这明显是for不能识别的,报错。
  1. for /f "tokens=1,2,3 delims=-  skip=4" %%i in (a.txt) do echo %%i %%j
复制代码
虽然有两个空格,但是for会认为这两个空格是delims与skip的间隔,所以分隔符只是-。

[ 本帖最后由 sysplay 于 2010-1-27 08:45 编辑 ]

TOP

返回列表