中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-03 14:00
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [讨论]判定文件中某行是否空行(非windows文件) 查看 812 回复 11
楼 主 [讨论]判定文件中某行是否空行(非windows文件) 发表于 2008-05-16 01:48 ·  中国 重庆 南岸区 电信
初级用户
积分 45
发帖 19
注册 2007-03-08 02:14
19年会员
UID 81032
性别 男
状态 离线
能否用批处理实现判定文件中某一行是否是空行?感觉很困难啊。大家一起讨论一下。


请看4楼

[ Last edited by gahoo on 2008-5-16 at 12:52 PM ]
2 发表于 2008-05-16 01:48 ·  中国 重庆 南岸区 电信
初级用户
积分 45
发帖 19
注册 2007-03-08 02:14
19年会员
UID 81032
性别 男
状态 离线
比如文件test.txt中
test.txt----------------
asdfsdf
fewfwekr;

werweori

weoriwejr
rweirjower
woeirjowe


wopeirjowerjo


---------------------------

怎么判断第3、5、9、10、12、13行是空行

[ Last edited by gahoo on 2008-5-16 at 01:50 AM ]
3 发表于 2008-05-16 01:55 ·  中国 湖北 武汉 联通
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
19年会员
UID 59080
状态 离线
findstr /n "^$" text.txt
4 发表于 2008-05-16 12:43 ·  中国 重庆 南岸区 电信
初级用户
积分 45
发帖 19
注册 2007-03-08 02:14
19年会员
UID 81032
性别 男
状态 离线
我明白为什么我没弄出来了,那个文件是其他操作系统下的,回车符号与windows不同,在记事本里面看着就是黑框框,findstr /n "^$" test.txt无法处理这种情况。
大家再研究一下看


请大家下载这个文件再看看
test.txt文件
5 发表于 2008-05-16 13:41 ·  中国 上海 联通
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
如果是Unix系统中的文件,可以先在Unix运行:
unix2dos test.txt

然后在放到windows里面就行了
6 发表于 2008-05-16 15:04 ·  中国 浙江 杭州 电信
新手上路
积分 4
发帖 2
注册 2008-04-18 16:03
18年会员
UID 116254
性别 男
状态 离线
Originally posted by gahoo at 2008-5-16 12:43 PM:
我明白为什么我没弄出来了,那个文件是其他操作系统下的,回车符号与windows不同,在记事本里面看着就是黑框框,findstr /n "^$" test.txt无法处 ...


试试这段


@ECHO OFF
FOR /f "tokens=1* delims=:" %%i IN ('findstr /n .* 413.txt') DO (
ECHO.%%j | Findstr /i "^.$" > NUL
IF NOT ERRORLEVEL 1 ( ECHO line %%i is empty! ))
7 发表于 2008-05-16 17:41 ·  中国 重庆 南岸区 电信
初级用户
积分 45
发帖 19
注册 2007-03-08 02:14
19年会员
UID 81032
性别 男
状态 离线
Originally posted by HAT at 2008-5-16 01:41 PM:
如果是Unix系统中的文件,可以先在Unix运行:
unix2dos test.txt

然后在放到windows里面就行了



目的就是只使用批处理解决这个问题
8 发表于 2008-05-16 17:43 ·  中国 重庆 南岸区 电信
初级用户
积分 45
发帖 19
注册 2007-03-08 02:14
19年会员
UID 81032
性别 男
状态 离线
Originally posted by bg5hfc at 2008-5-16 03:04 PM:


试试这段


@ECHO OFF
FOR /f "tokens=1* delims=:" %%i IN ('findstr /n .* 413.txt') DO (
ECHO.%%j | Findstr /i "^.$" > NUL
IF NOT ERRORLEVEL 1 ( ECHO li ...



测试可行,不错
9 发表于 2008-05-16 17:48 ·  中国 重庆 南岸区 电信
初级用户
积分 45
发帖 19
注册 2007-03-08 02:14
19年会员
UID 81032
性别 男
状态 离线
我发现非常简单……只要

findstr /n /v "." 413.txt
10 发表于 2008-05-17 18:29 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
11 发表于 2008-05-18 00:03 ·  中国 重庆 电信
初级用户
积分 45
发帖 19
注册 2007-03-08 02:14
19年会员
UID 81032
性别 男
状态 离线
咦?怎么搜索没注意看到?
12 发表于 2008-05-18 00:12 ·  中国 重庆 电信
初级用户
积分 45
发帖 19
注册 2007-03-08 02:14
19年会员
UID 81032
性别 男
状态 离线
突然发现

find /v /c "" 413.txt
结果为什么是11而不是12
findstr .* 413.txt | find /v /c ""
结果就是12
论坛跳转: