您的位置:首页 > 其它

bat批处理文件操作

2012-06-26 11:32 183 查看
本文转载于

 

[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=0set /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=0set /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就无法识别了。不晓得批处理文件的所有文本处理的命令都是有这个限制的,以后得留心了。

 

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c 百度 测试