标题: [文本处理] 为什么这段代码处理稍大一点的文本就无法执行了 [打印本页]
作者: lbailian 时间: 2012-5-5 10:30 标题: 为什么这段代码处理稍大一点的文本就无法执行了
本帖最后由 lbailian 于 2012-5-5 12:00 编辑
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir/b/a-d *.txt') do (
set s=
(for /f "tokens=*" %%j in ('type "%%i"') do (
if "!s!" neq "" echo !s!
set s=%%j))>temp.txt
echo BBBBBBB>>temp.txt
move /y temp.txt "%%i")
以上就是代码,3M+的文本都无法处理了,要怎么修改代码,让它可以处理稍大一点的文本,最好能处理将近10M的文本~
要处理的文本有很多,代码的作用是替换掉文本最后一行的内容~
作者: yangfengoo 时间: 2012-5-5 10:53
'type "%%i"'改成"%%~i"
作者: neorobin 时间: 2012-5-5 11:22
回复 1# lbailian
请问具体想达到什么样的处理目的.
简单测试了一下, 对有换行结尾的文件原样的没变,
而没有换行结尾的文件就被截去最后一行, 而替换成 BBBBBBB, 并以换行结尾
不知楼主的意图是否如此?
作者: lbailian 时间: 2012-5-5 11:39
回复 2# yangfengoo
我只要修改最后一行的文本~
作者: lbailian 时间: 2012-5-5 11:40
回复 3# neorobin
就是把文本的最后一行内容替换成BBBBBBB
作者: gawk 时间: 2012-5-5 11:49
回复 5# lbailian - sed -i "$s/.*/BBBBBBB/" a.txt
复制代码
作者: poter 时间: 2012-5-5 13:58
这段代码运行起来是没什么问题的,利用空值和条件判断,让文本输出延后了一行
至于不能读取三兆以上的文本,可以试试把type取消掉,因为它本来就没有存在的必要- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=*" %%i in ('dir/b *.txt') do (
- set s=
- for /f "tokens=*" %%j in (%%i) do (
- if "!s!" neq "" echo !s!>>temp.txt
- set s=%%j
- )
- echo BBBBBBB>>temp.txt
- move /y temp.txt "%%i")
- set s=
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |