|
online365
初级用户
积分 182
发帖 75
注册 2006-10-11
状态 离线
|
『楼 主』:
谁能给我具体的讲讲 for /f 这个命令吗?
谁能给我具体的讲讲 for /f 这个命令吗?
这个命令好难哦。。
谢谢各位高手了。。小弟决定以后就在DOS联盟学习了
|
|
2006-10-24 04:15 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
|
2006-10-24 04:24 |
|
|
online365
初级用户
积分 182
发帖 75
注册 2006-10-11
状态 离线
|
『第
3 楼』:
谢谢,但是你的这个我看过了,还是有很多地方不懂
|
|
2006-10-24 13:51 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2006-10-24 23:51 |
|
|
holyman
初级用户
积分 42
发帖 20
注册 2006-10-24
状态 离线
|
『第
5 楼』:
可以把想要应用for的需求贴上来,通过高手们的解答来学会应用
|
|
2006-10-25 00:04 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
6 楼』:
恩,同意F4和F5的看法,只有多多练习才能熟练的运用for来解决问题。或者可以把你不懂的for语句帖上来,大家一起帮你解释也可以啊。这样的学习效果应该是不错的。
|
|
2006-10-25 00:18 |
|
|
online365
初级用户
积分 182
发帖 75
注册 2006-10-11
状态 离线
|
『第
7 楼』:
我就是FOR /f 这个不会啊, 好复杂啊。。
主是要这个选项~ tokens=x,y,m-n 把我头都搞大了。。
|
|
2006-10-25 01:54 |
|
|
trickster
初级用户
积分 63
发帖 33
注册 2006-12-4
状态 离线
|
『第
8 楼』:
for命令应该是DOS命令中比较难理解的一个,如果不能灵活的应用for语句,你就做不出一个好的批处理。由于本人也是刚刚开始学习dos系统,可能很多理解的都比较肤浅,但本着自由~共享的精神,把自己在最近学习for命令的一些心得拿出来跟LZ共同进行探讨,如有不当之处也请其它朋友给予指正,同时也希望LZ能从中到一些启示:
eol=c - 指一个行注释字符的结尾(就一个)
比如:eol=; for/f 命令在处理时会忽略掉以“;”打头的行,又如: eol=@ for命令在处理后面的操作是将会忽略掉以@大头的行,这个类似与批处理中在遇到以::打头的行时批处理对本行不做处理一样.
skip=n - 指在文件开始时忽略的行数。
比如你设定 skip=5 则for命令从你给定的文件中的第6行(跳过5行)开始处理.这个比较容易理解,不在过多解释.
delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。
delims的作用就是指定分隔符,比如在XP环境下用date /t命令显示当前的日期会得到:"2006-12-29 星期五"而当使用下面的命令后看一下有什么变化:
for /f "delims=- " %a in('date /t') do echo %a
得到的是"2006",为什么会这样呢,就是因为你使用delims指定l了"-"和" "(空格,)作为分隔符,for 命令在处理时取出分隔符两边的符号,至于为什么最后的结果是2006,将在说完tokens后给出
tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配。m-n格式为一个范围。通过 nth 符号指定 mth。如果符号字符串中的最后一个字符星号,那么额外的变量将在最后一个符号解析之后分配并接受行的保留文本。
当tokens后指定了多个符号时,后面的变量也会进行扩充,比如将上面的例子改变一下:
for /f "tokens=1-4 delims=- " %a in ('date /t') do echo %a:%b:%c:%d
运行后我们得到"2006:12:29:星期五".其中,这个 for 程序体的语句引用 %a 来取得第一个符号(2006),引用 %b 来取得第二个符号(12),引用 %c来取得第三个符号(29),引用%d来取得第四个符号(星期五), 因为你用"tokens"指定了"date /t"命令输出的结果中的第一到第四个符号,所以这时引出了%b;%c;%d,当然后面的变量也不是随便给出的,它必须跟第一次给出的变量名是相邻的,但后面(do后面执行的命令)他们之间的顺序可以颠倒,只是会影响到最终的输出结果
如果在for /f中没有指定"tokens",默认 tokens=1 ,现在你应该明白为什么在第一个例子中得到的结果是"2006"了吧
|
|
2007-1-1 05:21 |
|