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

[文本处理] 批处理逐行合并两个文本文件时怎样处理特殊字符?

a.txt
  1. 1
  2. : 2
  3. ~!@#$%^&*()
  4. {}:"<>?
复制代码
b.txt
  1. 2
  2. : 1
  3. {}:"<>?
  4. ~!@#$%^&*()
复制代码
合并之后得到c.txt
  1. 1 2
  2. : 2 : 1
  3. ~!@#$%^&*() {}:"<>?
  4. {}:"<>? ~!@#$%^&*()
复制代码

批处理没有类似Linux Shell 里的 jion 的合并命令
方法我觉得只有用For加递增变量来搞定这个问题
然后用Echo输入递增的变量

希望高手给出更好的方法

TOP

回复 2# 冷玉公子


能不能先把你的方法变成代码让我学习一下?

TOP

求关注求代码

TOP

本帖最后由 ArdentMan 于 2011-9-4 10:04 编辑

很麻烦的说:
  1. @Echo Off
  2. For /F "tokens=1* delims=:" %%i In ('Findstr /n .* b.txt') Do Set "_%%i=%%j"
  3. (For /F "delims=" %%i In ('Findstr /n .* a.txt') Do (
  4.   Set "Str=%%i"& Set /A Count+=1
  5.   SetLocal EnableDelayedExpansion
  6.   For %%j In (!Count!) Do Echo,!Str:*:=! !_%%j!
  7.   EndLocal
  8. ))>c.txt
  9. Start c.txt
复制代码
一路飘过的鸟~~~

TOP

本帖最后由 ArdentMan 于 2011-9-4 10:51 编辑
  1. @Echo Off
  2. Set /A Count=-1
  3. :Lp
  4. Set /A Count+=1
  5. Set "Sk=skip=%Count% "
  6. If %Count% EQU 0 Set "Sk="
  7. For /F "%Sk%delims=" %%i In (a.txt) Do Set /P=%%i <Nul&Goto Next
  8. Pause>Nul&Exit
  9. :Next
  10. For /F "%Sk%delims=" %%i In (b.txt) Do Set /P=%%i<Nul&Echo,&Goto Lp
复制代码
一路飘过的鸟~~~

TOP

  1. gawk "NR==FNR{a[FNR]=$0}NR>FNR{print a[FNR],$0}" a.txt b.txt > c.txt
复制代码

TOP

返回列表