|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『楼 主』:
用for和if命令判断文本
a.txt中的内容
f:\111\abc\rty\ddfd\rr.txt
f:\111\abc\hj\wed\fr4.txt
f:\111\abc\rjhy\tyu\ksf\hjy7.txt
f:\111\abc\gjy\uio\7ufg.txt
f:\111\abc\tuy\iyd.txt
f:\111\abc\riop\sew\mjk.txt
f:\111\abc\rr.txt
目的:想用for命令循环a.txt的内容以\作分隔符,将1,2,3,4,5,6,部分复制到b.txt中.每一行中没有6部分和大于6部分的行都不要.也就是说想用if命令判断每一行,有1,2,3,4,5,6,例的就复制到b.txt中发现有多余6例或不足6例的就忽略.
这样说清楚吗?
[ Last edited by namejm on 2006-12-20 at 10:02 PM ]
|
|
2006-12-20 11:19 |
|
|
namejm
荣誉版主
batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第
2 楼』:
以下为演示代码,如果满意,在 echo 语句后加上重定向部分就可以了。考虑到路径中可能带空格及特殊字符,所以用引号把每条路径括起来了,如果没有我所说的情况,可以把引号去掉:
@echo off
for /f "tokens=1-6* delims=\" %%i in (a.txt) do call :pick-up "%%i" "%%j" "%%k" "%%l" "%%m" "%%n" "%%o"
pause
goto :eof
:pick-up
if %6=="" goto :eof
if not %7=="" goto :eof
set "var=%1\%2\%3\%4\%5\%6"
echo "%var:"=%"
goto :eof
|
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。 |
|
2006-12-20 12:41 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
3 楼』:
namejm 先谢了,
还有请问一句,代码里有好几个跳转到标签eof,我怎么没看到eof的标签呢?
见笑了,我很喜欢批处理,可又没人教,呵呵..........麻烦你了.
[ Last edited by 26933062 on 2006-12-20 at 05:06 PM ]
|
|
2006-12-21 05:56 |
|
|
redtek
金牌会员
积分 2902
发帖 1147
注册 2006-9-21
状态 离线
|
『第
4 楼』:
GOTO /? 命令的帮助中带有 :eof 的解释~:)
Quote: | GOTO 命令现在接受目标标签 :EOF,这个标签将控制转移到当前
批脚本文件的结尾。不定义就退出批脚本文件,这是一个容易的
办法。有关能使该功能有用的 CALL 命令的扩展描述,请键入
CALL /?。 |
|
|
Redtek,一个永远在网上流浪的人……
_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._ |
|
2006-12-21 06:19 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
5 楼』:
还是没看懂,我可以理解为运行goto :eof 这句时就退出批处理吗?
|
|
2006-12-21 09:45 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
6 楼』:
如果在标签里面,goto :eof 就是跳出当前的标签脚本体,继续执行下面的命令。
如果不在标签里面,一般是直接跳出批处理。
|
|
2006-12-21 11:28 |
|
|
lisiyuan
初级用户
积分 21
发帖 28
注册 2006-12-15
状态 离线
|
|
2006-12-21 11:45 |
|
|