本文转载于
[BAT]读取文件某1/n行_烂笔头_百度空间 |
http://hi.baidu.com/northteam/blog/item/1fc31730fbc16c9da8018e81.html
可以实现从某个文件中从指定行开始读取指定的行数输出 @echo off setlocal enabledelayedexpansion set skip=1 ::skip为跳过行数 set loop=2 ::loop为输出行数 set filename=test.txt ::filename为所要读取的文件 set counter=0 if .%skip% == .0 (set opt="tokens=*" ) else set opt="skip=%skip% tokens=*" for /f %opt% %%i in (%filename%) do ( if !counter! geq !loop! goto wayout set /a counter+=1 echo %%i ) :wayout |
@bug1
set skip=1 ::##应该为set n=2
::skip为跳过行数
@sug1
echo 文件名为 = %filename%
echo @跳过行数 = %n%
echo @输出行数 = %loop%
Echo =======================
for /f %opt% %%i in (%filename%) do (
if !counter! geq !loop! goto wayout
set /a counter+=1
echo %%i
)
:wayout
Echo =======================
pause
本文转载于 http://zhidao.baidu.com/question/351437453.html
写个批处理,读取某个文件的N行,第N个字符。例如: 读取C:\ log.txtlog.txt的内容为 abcd efg 123 ssssabcd efg 456ssssabcd efg 789ssss我只获取里面的 123 456 789 然后这3个数字相加,并求平均值,并以log2.txt保存在C盘。数字不定长度,可能是1000000,也可能是10000, 数字之后的都为 123 sss 234 sss 456 sss都是空格加SSS请教高手解决问题。
追问
我要有小数点的。 就是 11.11 22.22 33.33
回答
@echo off setlocal ENABLEDELAYEDEXPANSION set /a counts=0 set /a t=0 set /a ave=0 set /a tail=0 for /f "tokens=3" %%i in (c:\log.txt) do ( set /a t=!t!+%%i set /a counts=!counts!+1 set /a ave=!t!/!counts! set /a tail=!t!%!counts! echo 总和=!t! 次数=!counts! 平均数=!ave!.!tail:~0,2! ) echo !ave!.!tail:~0,2!>>c:\log2.txt pause 以上代码实现平均值保留两位小数
追问
你这样只是结果有小数点,那么取值的时候,还是没小数点,我的意思是 我要取的值有6位小数点,结果也有6位,最少取的值和结果的值都要4位。
回答
!tail:~0,2! 里面的2表示保留两位小数 你要求那么精细,就不要用bat好了 bat只适用于要求不高的加法,会自动抛弃小数,自己实现小数加法很麻烦,还要考虑进位,至少我无能为力
本文转载于 http://hi.baidu.com/zqsystem/blog/item/eac31e8a89b068ad0e244474.html
批处理读取文本中的每一行
我需要的是要读取每一条的第一列信息,如下格式
ary,Ary Hong,,aaa@163.com,,,,
我是需要用户名ary,于是如下:
@echo off
for /f "delims=," %%i in (users.txt) do ......
每一行中,各信息以“,”分隔,所以定义了 "delims=,"后,就会自动读取以“,”分隔的第一个元素了。
虽然可以读取每一行中所需要的信息,但每次执行批处理的时候都找不到记录,后来才发现时文本文件的编码在作怪,如果文件编码是ANSI,是可以读取的,如果是UniCode就无法识别了。不晓得批处理文件的所有文本处理的命令都是有这个限制的,以后得留心了。