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

LZ这个问题很有意义,tmplinshi的回答很巧妙!~顶起,继续观察。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

本帖最后由 cjiabing 于 2011-6-26 00:19 编辑

8# zm900612
我在处理这些问题的时候,都不敢用横排的,一般都是用竖排的,遇到未知的行时,用findsrt /n来定位行,或者添加set /a num+=1来计算。
因为在处理横排(如%%a %%b %%c)的时候,最后面的变量往往为空,或者不确定,而且定位起来比较麻烦,比如,我只要最后一个变量,而对前面的变量忽略不计,这样,问题就出来了。
主要是懒,不想去解决,看看大家有好的想法学习下。
举例:提取“123  哈哈 789  A”中的“a”
通常是这样的:
for /f "tokens=4" %%a in (%var%) do echo %%a
但假如字符串的列是不规则的,有可能是4列,有可能是3列、5列、1列、10列……
此时用以上就有点难度了。
for %%a in (%var%) do set str=%%a
echo %str%
这样还好,不管怎么样,它只能提取最后一行(一列)。
假如提取倒数第二列呢?
使用不带参数的for,配合set /a num+=1计算,也能算得出倒数第二个变量。但for /f "tokens"就无能为力了,因为tokens的值只能是已知的数字,而变量的位置又不可知,结果是无法处理。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

返回列表