中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-04 16:28
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 有谁可以帮助我改下这个批处理 查看 767 回复 4
楼 主 有谁可以帮助我改下这个批处理 发表于 2007-05-26 17:40 ·  中国 广东 广州 电信
初级用户
积分 87
发帖 29
注册 2007-03-31 01:15
19年会员
UID 83440
性别 女
状态 离线
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行
2 发表于 2007-05-26 18:17 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
你要改什么?
3 发表于 2007-05-26 18:20 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
没明白是什么意思。
4 发表于 2007-05-27 18:25 ·  中国 陕西 渭南 电信
初级用户
★★
积分 186
发帖 92
注册 2007-03-27 08:20
19年会员
UID 83047
性别 男
状态 离线
好象看明白一点,楼主是想判断文本文件的行数。

出错的原因是没有及时清空变量,在你代码的每一个@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 ]
5 发表于 2007-05-28 09:06 ·  中国 广东 广州 电信
初级用户
积分 87
发帖 29
注册 2007-03-31 01:15
19年会员
UID 83440
性别 女
状态 离线
是的想判断文本文件的行数
论坛跳转: