批处理读取Txt文本,循环读取最后8行或循环读取文件最后1K大小!输出到新TXT文件!

输出到新文件时始终保持就循环读取出的8行内容不要追加写入(或最后1K大小)要读取的TXT文本在是在不断更新中的!
例如:TXT文本内容如下:
[533:192]
Pos: 34.9s 1046f ( 0%) 205.34fps Trem: 18min 653mb A-V:0.000 [533:192]
Pos: 35.0s 1047f ( 0%) 204.93fps Trem: 18min 653mb A-V:0.000 [533:192]
Pos: 35.0s 1048f ( 0%) 205.13fps Trem: 18min 654mb A-V:0.000 [533:192]
Pos: 35.0s 1049f ( 0%) 205.32fps Trem: 18min 654mb A-V:0.000 [533:192]
Pos: 35.0s 1050f ( 0%) 205.52fps Trem: 17min 648mb A-V:0.000 [533:192]
Pos: 35.1s 1051f ( 0%) 205.07fps Trem: 18min 648mb A-V:0.000 [533:192]
Pos: 35.1s 1052f ( 0%) 205.27fps Trem: 18min 649mb A-V:0.000 [533:192]
Pos: 35.2s 1053f ( 0%) 205.46fps Trem: 18min 649mb A-V:0.000 [533:192]
Pos: 35.2s 1054f ( 0%) 205.66fps Trem: 18min 650mb A-V:0.000 [533:192]
Pos: 35.2s 1055f ( 0%) 205.21fps Trem: 18min 650mb A-V:0.000 [533:192]
Pos: 35.2s 1056f ( 0%) 205.41fps Trem: 18min 650mb A-V:0.000 [533:192]
Pos: 35.3s 1057f ( 0%) 205.60fps Trem: 18min 651mb A-V:0.000 [533:192]
Pos: 35.3s 1058f ( 0%) 205.80fps Trem: 18min 651mb A-V:0.000 [533:192]
Pos: 35.4s 1059f ( 0%) 205.39fps Trem: 18min 652mb A-V:0.000 [533:192]
Pos: 35.4s 1060f ( 0%) 205.59fps Trem: 18min 652mb A-V:0.000 [533:192]
Pos: 35.4s 1061f ( 0%) 205.78fps Trem: 18min 653mb A-V:0.000 [533:192]
Pos: 35.4s 1062f ( 1%) 205.97fps Trem: 18min 653mb A-V:0.000 [533:192]
Pos: 35.5s 1063f ( 1%) 205.53fps Trem: 18min 653mb A-V:0.000 [533:192]
Pos: 35.5s 1064f ( 1%) 205.72fps Trem: 18min 654mb A-V:0.000
以上文本都是在不断更新的
我要用批处理 来循环读取他的最后8行内容(或最后1000字节)的内容 循环输出到新的txt里面
新的TXT里面始终保持 就8行内容 (或最后1000字节)的内容!
我用VB写的程序 可以做到!单要读取的TXT文本是在不断更新的 越来越大 30分钟就到35-40MB大小 VB循环读取它会卡死(消耗内存太大)!所以要做一个批处理来执行它! 本人只会点vb 批处理一点不通! 请各位高手们帮帮忙
最好是以 最后(1000字节大小)来读取!
以 行来读取 好像有问题! 在TXT下 我以下的内容好像都是一行里的!
Pos: 35.4s 1061f ( 0%) 205.78fps Trem: 18min 653mb A-V:0.000 [533:192]
Pos: 35.4s 1062f ( 0%) 205.97fps Trem: 18min 653mb A-V:0.000 [533:192]
Pos: 35.5s 1063f ( 0%) 205.53fps Trem: 18min 653mb A-V:0.000 [533:192]
Pos: 35.5s 1064f ( 0%) 205.72fps Trem: 18min 654mb A-V:0.000 [532:192]
在我的TXT里 他们都显示在一行里连着的 中间有个黑框隔着!
( 0%) 205.53fps Trem: 18min 653mb A-V:0.000 [533:192]▉ Pos: 35.5s 1064f ( 0%)205.72fps Trem: 18min 654mb A-V:0.000 [532:192]▉Pos: 35.5s 1064f ( 0%)............

::原文件1.txt 后8行输出到2.txt ,未考虑空行的处理,需要的话追问。
@echo off
for /f "tokens=2 delims=:" %%i in ('find /c /v "" 1.txt') do set /a n=%%i-8
(for /f "skip=%n% tokens=*" %%i in (1.txt) do echo %%i)>2.txt追问

没有读取最后的8行 最后想要的没有读取

追答

代码没问题
主要是你的文本没分行。
推荐你用第三方命令行工具wfr.exe进行分行
wfr使用说明及下载http://baiy
.cn/utils/wfr/
下载后解压到批处理所在文件夹或windows\system32下。

@echo off
wfr 1.txt -r:"]" -t:"]\n"
for /f "tokens=2 delims=:" %%i in ('find /c /v "" 1.txt') do set /a n=%%i-8
(for /f "skip=%n% tokens=*" %%i in (1.txt) do echo %%i)>2.txt

追问

能否截取文件最后1000字节为新TXT文件呢!

你后面的方法不行的!这个批处理运行时 那个(例:1.TXT)是在使用中的!有新数据在不断往里写入!!WFR 无法进行分行!!

追答

@echo off
type 不断写的.txt >1.txt
wfr 1.txt -r:"]" -t:"]\n"
for /f "tokens=2 delims=:" %%i in ('find /c /v "" 1.txt') do set /a n=%%i-8
(for /f "skip=%n% tokens=*" %%i in (1.txt) do echo %%i)>2.txt

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-27
每次CMD下显示最后8~10行可以吗?追问

可以的 8-20都可以

追答

@echo off&setlocal enabledelayedexpansion
:ag
for /f "skip=4 tokens=3" %%i in ('dir Source.txt')do (
set .=%%i&set .=!.:,=!
set/a .=!.! / 75-7
more +!.! Source.txt >ok.txt
cls&type ok.txt
goto ag
)

不知道行不行,你试试吧~~ 如果你觉得监控太占资源请用PING延时1下。。。

追问

输出的OK.TXT 没显示

追答

相似回答