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

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

[复制链接]
发表于 2021-4-12 10:16:58 | 显示全部楼层 |阅读模式
文本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
复制代码
发表于 2021-4-12 10:27:36 | 显示全部楼层
linux 命令
  1. paste -d ' ' a.txt b.txt c.txt
复制代码
 楼主| 发表于 2021-4-12 10:29:07 | 显示全部楼层
回复 2# newswan

这个我是知道的,我想用批处理写,原来有个类似的帖子,我一直找不到了。
 楼主| 发表于 2021-4-12 10:47:32 | 显示全部楼层
回复 2# newswan

你知道批处理如何echo一个回车吗?
echo "回车“>test.txt应该怎么写?
发表于 2021-4-12 10:53:45 | 显示全部楼层
  1. >>1.txt echo,
复制代码
发表于 2021-4-12 11:28:43 | 显示全部楼层

  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
复制代码
发表于 2021-4-12 11:39:44 | 显示全部楼层
  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
复制代码
发表于 2021-4-12 11:46:07 | 显示全部楼层
  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. )
复制代码
这类文章有很多,这种一看就清楚
发表于 2021-4-13 00:10:14 | 显示全部楼层
学习了,可以 < 给 for 语句传递 行

  1. (
  2.     for  %%a in (*) do (
  3.         set /p a=
  4.     )
  5. )<1.txt
复制代码
发表于 2021-4-14 10:15:38 | 显示全部楼层
本帖最后由 xczxczxcz 于 2021-4-14 10:21 编辑

回复 8# xp3000

若a  b 文本各为1万行,那执行次数为:10000 ⅹ 10000;若对b文本每次用more来去掉某些行,应该更快。
发表于 2021-4-14 11:24:44 | 显示全部楼层
像这样前个文本每取一行,后个文本取所有行的循环,总是效率不高。下面代码好像效率也不高:
  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
复制代码
发表于 2021-4-14 11:31:32 | 显示全部楼层
回复 11# qixiaobin0715


    findstr耗时比较高
发表于 2021-4-14 11:33:01 | 显示全部楼层
回复 12# Batcher
嗯嗯
发表于 2021-4-14 23:09:56 | 显示全部楼层
把一个文件,每一行保存在一个变量中,不知道 变量的数量,变量的最大长度 限制是多少
或者用数组
发表于 2021-4-14 23:12:51 | 显示全部楼层
做个测试,比较一下各方案
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 14:44 , Processed in 0.021753 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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