中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 有谁可以帮助我改下这个批处理
作者:
标题: 有谁可以帮助我改下这个批处理 上一主题 | 下一主题
zhouxiaohuanv
初级用户





积分 87
发帖 29
注册 2007-3-31
状态 离线
『楼 主』:  有谁可以帮助我改下这个批处理

W9R.TXT     有8行
H7R.TXT     有0行
W9L.TXT     有6行
H7L.TXT     有5行
2PXH0R.TXT  有0行
2PXH7R.TXT  有7行
2PXH0L.TXT  有0行
2PXH7L.TXT  有8行
setlocal disableDelayedExpansion
@echo off
for /f "tokens=1 delims=:" %%i in ('findstr /n .* W9R.TXT') do set num=%%i
echo W9R文件有%num%行>1报告.txt
CLS
setlocal disableDelayedExpansion
@echo off
for /f "tokens=1 delims=:" %%i in ('findstr /n .* W9L.TXT') do set num=%%i
echo W9L文件有%num%行>2报告.txt
CLS
setlocal disableDelayedExpansion
@echo off
for /f "tokens=1 delims=:" %%i in ('findstr /n .* H7R.TXT') do set num=%%i
echo H7R文件有%num%行>3报告.txt
CLS
setlocal disableDelayedExpansion
@echo off
for /f "tokens=1 delims=:" %%i in ('findstr /n .* H7L.TXT') do set num=%%i
echo H7L文件有%num%行>4报告.txt
CLS
setlocal disableDelayedExpansion
@echo off
for /f "tokens=1 delims=:" %%i in ('findstr /n .* 2PXH0R.TXT') do set num=%%i
echo 2PXH0R文件有%num%行>5报告.txt
CLS
setlocal disableDelayedExpansion
@echo off
for /f "tokens=1 delims=:" %%i in ('findstr /n .* 2PXH0L.TXT') do set num=%%i
echo 2PXH0L文件有%num%行>6报告.txt
CLS
setlocal disableDelayedExpansion
@echo off
for /f "tokens=1 delims=:" %%i in ('findstr /n .* 2PXH7R.TXT') do set num=%%i
echo 2PXH7R文件有%num%行>7报告.txt
CLS
setlocal disableDelayedExpansion
@echo off
for /f "tokens=1 delims=:" %%i in ('findstr /n .* 2PXH7L.TXT') do set num=%%i
echo 2PXH7L文件有%num%行>8报告.txt
CLS
得出的结果
1报告.txt 有8行
2报告.txt 有6行
3报告.txt 有6行
4报告.txt 有5行
5报告.txt 有5行
6报告.txt 有5行
7报告.txt 有7行
8报告.txt 有8行

2007-5-26 17:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 2 楼』:  

你要改什么?

2007-5-26 18:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 3 楼』:  

没明白是什么意思。

2007-5-26 18:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lp1129
初级用户





积分 186
发帖 92
注册 2007-3-27
状态 离线
『第 4 楼』:  

好象看明白一点,楼主是想判断文本文件的行数。

出错的原因是没有及时清空变量,在你代码的每一个@echo off后加一行
set num=
用来清空变量,否则遇到内容为空的文件就会出错

以下修改简化你的代码为:

@echo off
for /f "delims=" %%a in ('dir /b *.txt') do (
set num=
set name=%%a
call :1
)
pause
:1
for /f "delims=" %%i in ('findstr /n .* "%name%"') do set /a num=num+1
if %num%#==# set num=0
echo %name%文件共有%num%行>>报告.txt
goto :eof

将以上代码保存为*.bat,然后与要判断行数的文件放在一起运行即可

[ Last edited by lp1129 on 2007-5-27 at 06:27 PM ]

2007-5-27 18:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zhouxiaohuanv
初级用户





积分 87
发帖 29
注册 2007-3-31
状态 离线
『第 5 楼』:  

是的想判断文本文件的行数

2007-5-28 09:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: