中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-26 05:03
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 用for和if命令判断文本 查看 1,108 回复 6
楼 主 用for和if命令判断文本 发表于 2006-12-20 11:19 ·  中国 湖南 长沙 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
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 ]
2 发表于 2006-12-20 12:41 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  以下为演示代码,如果满意,在 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没商量。
考虑问题复杂化,解决问题简洁化。
3 发表于 2006-12-21 05:56 ·  中国 湖南 长沙 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
namejm 先谢了,
还有请问一句,代码里有好几个跳转到标签eof,我怎么没看到eof的标签呢?
见笑了,我很喜欢批处理,可又没人教,呵呵..........麻烦你了.

[ Last edited by 26933062 on 2006-12-20 at 05:06 PM ]
4 发表于 2006-12-21 06:19 ·  中国 北京 东城区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
GOTO /? 命令的帮助中带有 :eof 的解释~:)


GOTO 命令现在接受目标标签 :EOF,这个标签将控制转移到当前
批脚本文件的结尾。不定义就退出批脚本文件,这是一个容易的
办法。有关能使该功能有用的 CALL 命令的扩展描述,请键入
CALL /?。
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
5 发表于 2006-12-21 09:45 ·  中国 湖南 长沙 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
还是没看懂,我可以理解为运行goto :eof 这句时就退出批处理吗?
6 发表于 2006-12-21 11:28 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线

  如果在标签里面,goto :eof 就是跳出当前的标签脚本体,继续执行下面的命令。
  如果不在标签里面,一般是直接跳出批处理。
7 发表于 2006-12-21 11:45 ·  中国 河北 保定 联通
初级用户
积分 21
发帖 28
注册 2006-12-15 10:55
19年会员
UID 73612
性别 女
状态 离线
学习了
论坛跳转: