![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 10:16 |
共 48,040 主题排行 / 350,125 发帖 / 今日 0 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]帮助分析! |
| 可打印版本 788 / 5 |
| 第1楼 tempuser | 发表于 2008-01-29 15:58 |
| 高级用户 发帖 261 积分 547 | |
|
[求助]帮助分析! findstr /n . test.txt
.是任何字符,/n是在匹配的每行前打印行数,那么上面的命令理解为打印文本test.txt的"全部行"? findstr . test.txt^|findstr /n . 首先在test.txt中查找任意字符,那么转义符后的findstr /n .和findstr /n . test有什么区别呢? 我是在本站一个帖子看到的如下代码: 前者应该是获取文本的全部行数,后者是获取有内容的行树,二者相减获取一个文本的空行数. for /f "delims=:" %%a in ('findstr /n . test.txt') do set m=%%a for /f "delims=:" %%a in ('findstr . test.txt^|findstr /n .') do set n=%%a set /a emptyline=%m%-%n% echo 空行数:%emptyline% |
|
| 第2楼 suntb | 发表于 2008-01-29 23:54 |
| 高级用户 发帖 277 积分 581 | |
|
findstr /n . test???
这个test应该是文本的文件名吧? |
|
| 第3楼 dinfli | 发表于 2008-01-30 01:57 |
| 初级用户 发帖 82 积分 180 | |
|
我不知道这个findstr命令。。不过。才看了下。。意思和楼主说的差不多。。楼主可以自已动手实验下!
|
|
| 第4楼 tempuser | 发表于 2008-01-30 08:47 |
| 高级用户 发帖 261 积分 547 | |
|
为什么没人回复呢?我很迷惑啊!
|
|
| 第5楼 plp626 | 发表于 2008-01-30 09:56 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
这个.是不包含回车符的,所有findstr . test.txt 打印的是非空行,如果某行是回车符它会视而不见. 加了参数/n后,它会给输出结果匹配上行号,这个行号自然是test.txt里的行号.
管道符|的作用是将前面的输出结果作为后面命令的操作对象,ps:那个转义字符^在for命令的"set"里才用,单独用findstr . test.txt^|findstr /n . 会出错. ..... ('findstr . test.txt^|findstr /n .') ..... 用管道符的作用这个还是可以理解的,这句的作用就是打印非空行的行号,但是这个行号已经不是test.txt里的行号了,而是findstr . test.txt输出结果在提示符下的行号, 所以这个结果最后一行的行号数就是test.txt的非空行数. ps: 楼主自己的帖子为什么都不仔细看呢,明明有简洁的代码,要学这个冗长,绕弯子的代码? http://www.cn-dos.net/forum/viewthread.php?tid=37313&fpage=1&highlight=### |
|
| 第6楼 tempuser | 发表于 2008-02-01 10:53 |
| 高级用户 发帖 261 积分 547 | |
Originally posted by plp626 at 2008-1-30 09:56: 哈哈,说的对!但还是不明白? findstr /v . test.txt 应该是将test.txt的空行结果作为|的输出,那么 find /v /c ""又怎么理解呢? /V 显示所有未包含指定字符串的行。 /C 仅显示包含字符串的行数。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |