标题: [文本处理] 批处理如何将多个文本第一行中的指定字符串替换成其他的字符串 [打印本页]
作者: ggwwhh 时间: 2008-8-31 22:09 标题: 批处理如何将多个文本第一行中的指定字符串替换成其他的字符串
本帖最后由 pcl_test 于 2016-8-8 14:44 编辑
比较烦琐的文本替换问题
对一个文件夹下的所有txt文本文件的第一行的000替换为555。。。并生成新文件(相当与另存为)。。。则文件名改为在原先文件名后加被替换的字
例:有一文件名为 QQQ 第一行为6543213100054553把其中的000替换为555。。。则新生成的文件名则改为QQQ555。。。。。。。批量对整个目录下的文件进行处理。。。。。
补充:是不是对大文本文件处理起来比较慢的啊。。。(希望几秒就搞定)
THANKS
作者: pusofalse 时间: 2008-8-31 22:44
比较慢,批处理是一批一批来操作,而不是一个一个来。。
还是不大明白意思,新生成的QQQ555中的内容是什么?
作者: batman 时间: 2008-8-31 23:18
是不是这样的假设要处理的文件在d:\test下,新生成的文件在d:\new下:- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /s /b d:\test\*.txt') do (
- for /f "usebackq delims=" %%i in ("%%a") do (
- if not defined flag (
- set "str=%%i"&set "str=!str:000=555!"
- echo !str!>"d:\new\%%~na!str!.txt"&set "flag=a"
- ) else (
- echo %%i>>"d:\new\%%~na!str!.txt"
- )
- )
- set "flag="
- )
- echo 搞定。&pause>nul
复制代码
作者: Batcher 时间: 2008-9-1 00:03
没有测试环境,不知这样对大文本文件能否满足“几秒就搞定”的要求:- @echo off
- for %%a in (*.txt) do (
- move /y "%%a" "%%~na555%%~xa"
- change "%%~na555%%~xa" /from "000" /to "555" /lines "1-1"
- )
复制代码
文本修改工具change.exe
http://bbs.bathome.net/viewthread.php?tid=1685
作者: ggwwhh 时间: 2008-9-1 22:09
就在当前目录下生成。。。。。
大文件就是这个文件超过1M。。。内容很多。。。替换起来会不会慢。。。
就只要替换第一行哦
作者: Batcher 时间: 2008-9-1 22:26
原来只有1M啊,我还以为多大呢。
替换起来会不会慢,自己试试不就知道了?
看过3、4楼的代码以后,你认为他们的代码是只替换第一行?还是替换所有行?
作者: ggwwhh 时间: 2008-9-3 21:28
哪位高秀能再完善1下吗。。。
作者: Batcher 时间: 2008-9-3 22:00
你想完善哪个?
你觉得哪里不够完善?
作者: ggwwhh 时间: 2008-9-3 22:07
就是在当前目录下生成啊。。。。flag 是什么意思啊
作者: terse 时间: 2008-9-4 00:07
这样是否提升点效率- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /s /b /a-d *.txt') do call:lp "%%i"
- pause&exit
- :lp
- for /f "usebackq delims=" %%i in (%1) do (
- if not defined str (
- set str=%%i&set "str=!str:000=555!"
- echo !str!>"%~dpn1555%~x1") else more/e +1 %1>>"%~dpn1555%~x1"&set str=&goto :eof
- ))
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |