找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27341|回复: 7

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

[复制链接]
发表于 2019-10-20 14:31:18 | 显示全部楼层 |阅读模式
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的是在下一行写入
发表于 2019-10-20 16:09:15 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2019-10-20 20:27:12 | 显示全部楼层
BAT完美。就是我的1.txt文件比较大(7.5G),添加数据有点久

运行了一个小时还没有添加完??
发表于 2019-10-20 20:34:10 | 显示全部楼层
试试这样可以提高点效率
  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
复制代码
 楼主| 发表于 2019-10-20 20:44:10 | 显示全部楼层
有办法把2.tx中要追加的数据删除重复再追加吗??
发表于 2019-10-20 21:13:04 | 显示全部楼层
  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
 楼主| 发表于 2019-10-21 08:04:44 | 显示全部楼层
回复 6# terse
如果是单纯修改2.txt的内容(16转12+去重复),不要追到1,txt,这个怎么改了。
我试了bat发现如果是要追加到我的文件里(7.5G)会很慢慢。一个小时过去还没有成功添加,可能是我的文件太大了。看来只能用PilotEdit打开添加了
 楼主| 发表于 2019-10-21 08:16:09 | 显示全部楼层
回复 2# zaqmlp


    有办法把2.tx中要追加的数据删除重复再追加吗??
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 00:17 , Processed in 0.031959 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表