[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何将多个文本第一行中的指定字符串替换成其他的字符串

本帖最后由 pcl_test 于 2016-8-8 14:44 编辑

比较烦琐的文本替换问题
对一个文件夹下的所有txt文本文件的第一行的000替换为555。。。并生成新文件(相当与另存为)。。。则文件名改为在原先文件名后加被替换的字


例:有一文件名为 QQQ 第一行为6543213100054553把其中的000替换为555。。。则新生成的文件名则改为QQQ555。。。。。。。批量对整个目录下的文件进行处理。。。。。



补充:是不是对大文本文件处理起来比较慢的啊。。。(希望几秒就搞定)



THANKS

比较慢,批处理是一批一批来操作,而不是一个一个来。。
还是不大明白意思,新生成的QQQ555中的内容是什么?
心绪平和,眼藏静谧。

TOP

是不是这样的假设要处理的文件在d:\test下,新生成的文件在d:\new下:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /s /b d:\test\*.txt') do (
  3.         for /f "usebackq delims=" %%i in ("%%a") do (
  4.              if not defined flag (
  5.                 set "str=%%i"&set "str=!str:000=555!"
  6.                 echo !str!>"d:\new\%%~na!str!.txt"&set "flag=a"
  7.                 ) else (
  8.                echo %%i>>"d:\new\%%~na!str!.txt"
  9.             )
  10.       )
  11.      set "flag="
  12. )
  13. echo 搞定。&pause>nul  
复制代码
***共同提高***

TOP

没有测试环境,不知这样对大文本文件能否满足“几秒就搞定”的要求:
  1. @echo off
  2. for %%a in (*.txt) do (
  3.   move /y "%%a" "%%~na555%%~xa"
  4.   change "%%~na555%%~xa" /from "000" /to "555" /lines "1-1"
  5. )
复制代码
文本修改工具change.exe
http://bbs.bathome.net/viewthread.php?tid=1685
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

就在当前目录下生成。。。。。







大文件就是这个文件超过1M。。。内容很多。。。替换起来会不会慢。。。



就只要替换第一行哦

TOP

原来只有1M啊,我还以为多大呢。
替换起来会不会慢,自己试试不就知道了?
看过3、4楼的代码以后,你认为他们的代码是只替换第一行?还是替换所有行?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

哪位高秀能再完善1下吗。。。

TOP

你想完善哪个?
你觉得哪里不够完善?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

就是在当前目录下生成啊。。。。flag 是什么意思啊

TOP

这样是否提升点效率
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /s /b /a-d *.txt') do call:lp "%%i"
  3. pause&exit
  4. :lp
  5. for /f "usebackq delims=" %%i in (%1) do (
  6.      if not defined str (
  7.      set str=%%i&set "str=!str:000=555!"
  8.      echo !str!>"%~dpn1555%~x1") else more/e +1 %1>>"%~dpn1555%~x1"&set str=&goto :eof
  9.      ))
复制代码

TOP

返回列表