Board logo

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

作者: bh62549    时间: 2019-10-20 14:31     标题: 求个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的是在下一行写入
作者: zaqmlp    时间: 2019-10-20 16:09

  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
复制代码

作者: bh62549    时间: 2019-10-20 20:27

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

运行了一个小时还没有添加完??
作者: terse    时间: 2019-10-20 20:34

试试这样可以提高点效率
  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
复制代码

作者: bh62549    时间: 2019-10-20 20:44

有办法把2.tx中要追加的数据删除重复再追加吗??
作者: terse    时间: 2019-10-20 21:13

  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
作者: bh62549    时间: 2019-10-21 08:04

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

回复 2# zaqmlp


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




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2