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

[文本处理] 长度相同的文件合并的批处理问题

文本1

91B2C9E1
5800520c
69f4cd8f
42040a49


文本2


05000100
00896443
0A000000
06000000

希望得到的结果是

91B2C9E1 05000100
5800520c 00896443
69f4cd8f 0A000000
42040a49 06000000

中间的分隔符是空格。

我记得以前有个类似的需求,代码大概是这样写的,有些关键的地方我忘记了。希望坛里的大牛补全一下,谢谢!
  1. for /f "delims=" %%x in ('1.txt') do (
  2.        echo %%x
  3. )<2.txt
  4. pause
复制代码

回复 15# newswan
不用比较了,看文章就知道我那个效率不高,
大文本用EmEditor写脚本,先将文本分1000份然后并行处理最后合并非常快,
这种方式在内存完成,不会一次次写入硬盘造成损耗

TOP

做个测试,比较一下各方案

TOP

把一个文件,每一行保存在一个变量中,不知道 变量的数量,变量的最大长度 限制是多少
或者用数组

TOP

回复 12# Batcher
嗯嗯

TOP

回复 11# qixiaobin0715


    findstr耗时比较高
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

像这样前个文本每取一行,后个文本取所有行的循环,总是效率不高。下面代码好像效率也不高:
  1. @echo off
  2. findstr /n ".*" 文本2.txt>文本2.temp
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%a in (文本1.txt) do (
  5.     set /a m+=1
  6.     for /f "tokens=1* delims=:" %%b in ('findstr /b "!m!:" 文本2.temp') do (
  7.         echo,%%a %%c
  8.     )
  9. )
  10. del 文本2.temp
  11. pause
复制代码

TOP

本帖最后由 xczxczxcz 于 2021-4-14 10:21 编辑

回复 8# xp3000

若a  b 文本各为1万行,那执行次数为:10000 ⅹ 10000;若对b文本每次用more来去掉某些行,应该更快。
QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

学习了,可以 < 给 for 语句传递 行
  1. (
  2.     for  %%a in (*) do (
  3.         set /p a=
  4.     )
  5. )<1.txt
复制代码

TOP

  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "delims=" %%A in (A.txt)do (set /a a+=1,b=0
  3.    for /f "delims=" %%B in (B.txt)do (set /a b+=1
  4.    if !a!==!b! echo %%A %%B>>New.txt)
  5. )
复制代码
这类文章有很多,这种一看就清楚

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "delims=" %%i in (1.txt) do (
  4. set /p str=
  5. echo,%%i !str!
  6. ))<2.txt
  7. pause
复制代码

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. >new.txt (
  4.     for /f "delims=" %%a in (1.txt) do (
  5.         set /p q=%%a
  6.         echo;!q!
  7.     )
  8. )<2.txt
  9. start new.txt
  10. pause
  11. exit
复制代码

TOP

  1. >>1.txt echo,
复制代码

TOP

回复 2# newswan

你知道批处理如何echo一个回车吗?
echo "回车“>test.txt应该怎么写?

TOP

回复 2# newswan

这个我是知道的,我想用批处理写,原来有个类似的帖子,我一直找不到了。

TOP

返回列表