bat批处理文件操作

本文转载于

 

[BAT]读取文件某1/n行_烂笔头_百度空间

http://hi.baidu.com/northteam/blog/item/1fc31730fbc16c9da8018e81.html

 

[BAT] 读取文件某1/ n行
2008-03-21 07:17

可以实现从某个文件中从指定行开始读取指定的行数输出

@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请教高手解决问题。

@echo off
setlocal ENABLEDELAYEDEXPANSION
set /a counts=0
set /a t=0

 

@echo off
setlocal ENABLEDELAYEDEXPANSION
set /a counts=0
set /a t=0
set /a ave=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!
echo 总和=!t! 行数=!counts! 平均数=!ave!
) 
echo !ave!>>c:\log2.txt
pause 

以上代码实计读取并显示log.txt中各行的第三列数字之累计和,行数,累计平均数,并将最后的平均数追加到log2.txt
缺点:对数字小数点精度未测试.楼主可亲测
最后的平均数是取的整数,没有保留小数(如需要,还可以改进)
追问
我要有小数点的。
就是 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就无法识别了。不晓得批处理文件的所有文本处理的命令都是有这个限制的,以后得留心了。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值