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

[文本处理] 批处理合并题目和答案求教

[复制链接]
发表于 2014-3-10 13:24:26 | 显示全部楼层 |阅读模式
问题
1.txt内容:

  1. 1.xxxxx:
  2. 2.xxxxx:
  3. 3.xxxxx:
复制代码
2.txt内容
  1. 1.a 2.b 3.c
复制代码
合成如下形式:

  1. 1.xxxxx:a
  2. 2.xxxxx:b
  3. 3.xxxxx:c
复制代码
我是这么写的:

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1-3" %%i in (a.txt) do (
  3. set a1=%%i
  4. set a2=%%j
  5. set a3=%%k
  6. for /l %%j in (1,1,3) do (
  7. set a%%j=!a%%j:~-1!
  8. )
  9. )
  10. set i=1
  11. for /f "delims=" %%m in (q.txt) do (
  12. rem another way => call echo %%m %%a!i!%%
  13. for %%i in (!i!) do echo %%m !a%%i!
  14. set /a i=i+1
  15. )
  16. pause
复制代码
吭吭哧哧写出来的,觉得太麻烦,而且也不能通用。
如果题目不止3道就不行了。有什么通用的解决方法么?
求教。
发表于 2014-3-10 14:57:30 | 显示全部楼层
(for /f "tokens= 1* delims=." %%i in ('sed "s/ /\n/g" 2.txt') do (
set/p str=
        echo !str! %%j
))<1.txt>结果.txt
 楼主| 发表于 2014-3-10 16:15:53 | 显示全部楼层
回复 2# zhanglei1371


     谢谢,sed 果然强大方便,是该学学了。
发表于 2014-3-10 21:22:32 | 显示全部楼层
P可以这样
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "tokens=*" %%i in (2.txt) do (
  3.      for %%j in (%%i) do (
  4.          set s1=%%j
  5.          set/p s2=
  6.          echo !s2!!s1:*.=!
  7.      )
  8. ))<1.txt
  9. pause
复制代码
 楼主| 发表于 2014-3-11 13:48:11 | 显示全部楼层
回复 4# terse
  1. ()<1.txt
复制代码
的这种写法太牛了!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 02:08 , Processed in 0.030293 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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