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

[文本处理] 求个BAT删除空格和指定字符追加到另一文件

1.txt  
2.txt   
平时每天都要向1.txt添加新数据,每次都是PilotEdit打开添加,如果一天好几次就有点麻烦,现在想用bat添加,不知道如何下手,其中1.txt中的数据是12位字符串,每一行都是12位无空格,2.txt是16位字符串,每一行都是16位有空格,每次都是手动把16位字符改成12位的(把第7,8,15,16位删除)
16位:11 BB CD 99 11 A1 AA 5C
12位:11BBCD11A1AA
改成12位再添加到1.txt,如果是添加几行数据倒是无所谓了,要是上百就难了
下面是我单单写成合并都难了,
  1. @ ECHO OFF
  2. @ ECHO.
  3. set /p a=<"F:\TXT\1.txt"
  4. type "F:\TXT\1.txt" >> "F:\TXT\2.txt" \n
  5. @ ECHO 已成功添加文本
  6. pause
复制代码
可是把2.txt向1.txtx添加不是在最后换行后才追加,比如:
1.txt中数据是
1A20A1DBA719
AA217742BCAB
2.txt中数据是
AB CD 09 81 15 AB 03 C3
11 BB CD 99 15 A1 6A 5C
12 BB CD 99 41 A1 A3 AC
13 BB CD DD 34 A1 A1 CC
21 BD 1D 39 14 A1 3A 5C
运行bat后成了
1A20A1DBA719
AA217742BCABAB CD 09 81 15 AB 03 C3
11 BB CD 99 15 A1 6A 5C
12 BB CD 99 41 A1 A3 AC
13 BB CD DD 34 A1 A1 CC
21 BD 1D 39 14 A1 3A 5C
我想追加后1.txt的是在下一行写入

  1. @echo off
  2. set info=互助互利,支付宝扫码头像,感谢打赏
  3. rem 有问题,可加QQ956535081及时沟通
  4. title %info%
  5. cd /d "%~dp0"
  6. set "f1=1.txt"
  7. set "f2=2.txt"
  8. (for /f "delims=" %%a in ('type "%f1%"') do echo;%%a)>"%tmp%\t.t"
  9. (for /f "delims=" %%a in ('type "%f2%"') do (
  10.     set "line=%%a"
  11.     setlocal enabledelayedexpansion
  12.     set "line=!line: =!"
  13.     echo;!line:~,6!!line:~8,6!
  14.     endlocal
  15. ))>>"%tmp%\t.t"
  16. copy /y "%tmp%\t.t" "%f1%"
  17. echo;%info%
  18. pause
复制代码
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

BAT完美。就是我的1.txt文件比较大(7.5G),添加数据有点久

运行了一个小时还没有添加完??

TOP

试试这样可以提高点效率
  1. @echo off & setlocal enabledelayedexpansion
  2. set "f1=1.txt"
  3. set "f2=2.txt"
  4. (for /f %%i in ('findstr /v $ !f1!') do echo.
  5. for /f "delims=" %%i in (!f2!) do (
  6.      set "s=%%i"
  7.      set s=!s: =!
  8.      echo;!s:~,6!!s:~8,6!
  9. ))>>"!f1!"
  10. pause
复制代码

TOP

有办法把2.tx中要追加的数据删除重复再追加吗??

TOP

  1. @echo off & setlocal enabledelayedexpansion
  2. set "f1=1.txt"
  3. set "f2=2.txt"
  4. (for /f %%i in ('findstr /v $ !f1!') do echo.
  5. for /f "delims=" %%i in (!f2!) do (
  6.      set "s=%%i"
  7.      set s=!s: =!
  8.      set s=!s:~,6!!s:~8,6!
  9.      if not defined _!s! echo;!s!
  10.      set _!s!=1
  11. ))>>"!f1!"
  12. pause
复制代码
回复 5# bh62549

TOP

回复 6# terse
如果是单纯修改2.txt的内容(16转12+去重复),不要追到1,txt,这个怎么改了。
我试了bat发现如果是要追加到我的文件里(7.5G)会很慢慢。一个小时过去还没有成功添加,可能是我的文件太大了。看来只能用PilotEdit打开添加了

TOP

回复 2# zaqmlp


    有办法把2.tx中要追加的数据删除重复再追加吗??

TOP

返回列表