Board logo

标题: [文本处理] [已解决]请教下面批处理中得n+和n的区别是什么? [打印本页]

作者: mstsc    时间: 2011-10-2 23:39     标题: [已解决]请教下面批处理中得n+和n的区别是什么?

本帖最后由 mstsc 于 2011-10-5 17:15 编辑

:loop
set /a n+=1001     ::这里的n+和下面的n是什么区别呢?
echo %n:~-3%   ::取n的最后3位数
goto loop
::这比常规的补位方法更优越


for /f "tokens=* delims=0123" %%a in ("0000123456") do echo %%a
::去除前缀的n个字符
这个显示的结果是456    可是我不知道他是怎么显示出来的


请会的给帮帮忙解释一下   谢谢
作者: mstsc    时间: 2011-10-3 21:53

怎么没人给我解释一下呢?
作者: CrLf    时间: 2011-10-3 22:15

delims=0123 将 0123 这四个字符设为分隔符,再用 tokens=* 取除了行首的连续分隔符(不论出现的次数与顺序)之外的内容。
作者: mstsc    时间: 2011-10-4 19:01

回复 3# CrLf


    请问:delims 主要是设定隔符的吗?
        tokens=*   主要的意思是取什么内容的吗?
作者: bluewing009    时间: 2011-10-4 21:24

delims=设定分割符 tokens=* 取全部
比如你的:for /f "tokens=* delims=0123" %%a in("0000123456") do echo %%a

分割符是0123吧,因为是分割符,就不会再显示了,tokens=*把剩下的都取出来,你看,0000123456除去分割符“0123”剩下的显示,结果你说是什么呢?
作者: mstsc    时间: 2011-10-5 12:34

谢谢,请问:tokens=2,3*又是什么意思呢?
上面的n+和n的区别是什么呢?
作者: CrLf    时间: 2011-10-5 13:03

假设第一个参数变量为%%a,tokens=2,3*的意思是:取根据分隔符划分的第2节为第一个参数变量%%a的值 ,第3节为第二个变量%%b的值,第4节与其后所有内容则为%%c,*一定是从最后一个数字之后的那段算起,若只指定了*而未指定数字,则从第一段算起
n+=1等同于n=n+1
作者: bluewing009    时间: 2011-10-5 18:59

回复 6# mstsc


    tokens=2,3*就是取分割后的第23和剩余的部分,一般对应for的变量并顺延。比如for /f %%i "tokens=2,3*"那么分割第二部分对应%%i第三部分对应%%j剩余部分对应%%k,同样%%a b c   %%1 2 3,怎么分割的不用再说了吧

n+= 表示n自加某数,n+=1表示变量n自加1,一般常见于循环中,作为执行标记、计数标记等。




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