中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-03 05:21
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教eol=可否忽略多个? 查看 2,682 回复 17
楼 主 请教eol=可否忽略多个? 发表于 2007-01-16 00:26 ·  中国 辽宁 大连 联通
初级用户
积分 86
发帖 31
注册 2007-01-09 13:30
19年会员
UID 75960
性别 男
状态 离线
我想忽略以;和s开头的行
eol=;,s 行不通
此句该如何写?
2 发表于 2007-01-16 00:30 ·  中国 甘肃 兰州 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
貌似不可以
3 发表于 2007-01-16 01:39 ·  中国 江苏 连云港 电信
高级用户
★★★
前进者
积分 641
发帖 303
注册 2007-01-10 02:57
19年会员
UID 76009
性别 男
状态 离线
命令解释就是指定一个啊,没听说可以那样搞,如果有人那样能搞成功,还真的期待。。。。
我相信总有一天,总会遇到一个人可以相濡以沫、相吻以湿!
4 发表于 2007-01-16 01:53 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
假如要滤掉下面 A.TXT 文件中 “;” 和 “S” 开头的行内容:


;China
;Beijing
ShangHai
NanJing
;DaLian
HeBei
HeNan
中国
北京
上海




@echo off

for /f "eol=;" %%a in ('for /f "eol=S" %%b in ^(a.txt^) do @echo %%b') do echo %%a


分两次间接实现:(棕色)部分代码将滤掉 “S” 字母之后的字符串再次给它的调用者(黑色)部分代码。

而(黑色)部分代码 for 中的 eol 参数又会把 “;” 符号滤过,最后结果就等于间接实现了同时滤掉 “;” 和 “S” 这两个字符。




上面输出结果:


NanJing
HeBei
HeNan
中国
北京
上海



注: eol 参数区分字母的大小写
   eol 参数可以滤掉一个中文汉字(它同样把一个汉字当做象英文字母一样的一个“字节”来看待)

[ Last edited by redtek on 2007-1-15 at 12:54 PM ]
本帖最近评分记录 (共 6 条) 点击查看详情
评分人分数时间
lxmxn +8 2007-01-16 05:24
9527 +5 2007-01-16 05:47
FBOAR +1 2007-01-16 06:24
oilio +1 2007-01-16 09:18
luowei14 +1 2007-01-18 07:32
dosz +1 2009-03-07 12:51
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
5 发表于 2007-01-16 01:59 ·  中国 北京 联通
银牌会员
★★★
努力做坏人
积分 1,185
发帖 438
注册 2006-08-28 12:00
19年会员
UID 61449
来自 北京
状态 离线
有些时候不要把问题想的都这么复杂,可以用FOR进行二次过滤啊,虽然影响速度那也比一个个的弄好啊

演示文本

good
hello
ssldjf
ppp
ssss
nnnns
sdl,nf
kkkskdhnkfsdf
jhk
kdkkk


对应过滤代码如下:


@echo off&setlocal
for /f "eol=s tokens=*" %%a in (ii.txt) do (
for /f "eol=k tokens=*" %%x in ('echo/%%a') do echo %%x
)


虽然没有进行对特殊字符情况的考虑,不过你可以在次改造来实现啊
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
redtek +7 2007-01-16 05:18
FBOAR +1 2007-01-16 06:25
我今后在论坛的目标就是做个超级坏人!!!
6 发表于 2007-01-16 02:00 ·  中国 北京 联通
银牌会员
★★★
努力做坏人
积分 1,185
发帖 438
注册 2006-08-28 12:00
19年会员
UID 61449
来自 北京
状态 离线
呵呵,redtek兄抢先了....当灌水了

[ Last edited by 9527 on 2007-1-16 at 02:02 AM ]
我今后在论坛的目标就是做个超级坏人!!!
7 发表于 2007-01-16 02:06 ·  中国 甘肃 兰州 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
要是很多那?
8 发表于 2007-01-16 05:07 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
Originally posted by vkill at 2007-1-15 13:06:
要是很多那?


  可以变通一下,用findstr /v。我的a.txt文档:

China
Hubei
catalog
Visual FoxPro
China DOS Union
Windows Management Instrumentation Commandline
www.cn-dos.net
People
Vbscript and Javascript
中国DOS联盟
批处理脚本技术
Welcome to China DOS Union
You will learn much more from this forum.


  忽略以"C"、"V"、"中"开始的所有行:

@echo off
(for /f "delims=" %%a in ('findstr /v "^C.* ^中.* ^V.*" a.txt') do (echo=%%a))&pause&exit/b 0
本帖最近评分记录 (共 4 条) 点击查看详情
评分人分数时间
redtek +7 2007-01-16 05:13
Eblis +2 2007-01-16 13:49
luowei14 +1 2007-01-18 07:37
oilio +2 2007-01-28 06:14
9 发表于 2007-01-16 13:50 ·  中国 广东 广州 白云区 电信
中级用户
★★
积分 251
发帖 108
注册 2007-01-07 11:33
19年会员
UID 75721
性别 男
来自 湖南==>广州
状态 离线
lxmxn.高哇..这样可以忽略很多了...
DOS新人.多多指導
10 发表于 2007-01-16 14:21 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线

  嘿嘿,批处理就是没有做不到,只有想不到。
11 发表于 2007-01-17 01:21 ·  中国 辽宁 大连 联通
初级用户
积分 86
发帖 31
注册 2007-01-09 13:30
19年会员
UID 75960
性别 男
状态 离线
感谢楼上几位朋友的回答 谢谢
12 发表于 2007-01-18 07:39 ·  中国 江西 南昌 电信
初级用户
★★
积分 193
发帖 98
注册 2007-01-17 11:56
19年会员
UID 76803
性别 男
状态 离线
看来FOR 命令要多学学了 。。。
这家伙很聪明 什么都没留下
13 发表于 2007-01-18 12:31 ·  中国 陕西 汉中 电信
初级用户
积分 136
发帖 49
注册 2007-01-04 08:28
19年会员
UID 75413
性别 男
状态 离线
Originally posted by lxmxn at 2007-1-15 04:07 PM:


  可以变通一下,用findstr /v。我的a.txt文档:


  忽略以"C"、"V"、"中"开始的所有行:


@echo off
(for /f "delims=" %%a in ('findstr /v "^C.* ^中.* ^V.*" a.txt') do (echo=%%a))&pause&exit/b 0
红色部分中^这个符号是什么意思,为什么要用这个符号?
14 发表于 2007-01-18 13:51 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线

  ^符号在findstr里面代表匹配一个字符串的开头,而$代表匹配一个字符串的结尾,具体说明请看findstr /?。
15 发表于 2007-01-28 06:19 ·  中国 江苏 连云港 电信
高级用户
★★★
前进者
积分 641
发帖 303
注册 2007-01-10 02:57
19年会员
UID 76009
性别 男
状态 离线
lxmxn兄,我用过你说的方法,忽略以字符打头的行,我知道了。忽略以某某字符结尾的行,我没有试出来,不知道问题出在什么地方,看一下帮助命令,也没有发现什么。我是这样用的。忽略以“e,n,术”结尾的行
for /f "delims=" %a in ('findstr /v "$e.* $n.* $术.*" a.txt') do @echo %a
不知道错在什么地方,高手指点一下啊,在这儿谢过了。
我相信总有一天,总会遇到一个人可以相濡以沫、相吻以湿!
论坛跳转: