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

[文本处理] 批处理怎样以文本前两列数据为准找出其他文件中前两列相同的行数据?

根据一个文本的前两列数据 找到另一个文本前两列匹配的行数据 以文件a的数据找到文件b内前两行匹配的行数据  (b文件内列数不定)

本帖最后由 flyinnet9 于 2016-12-26 12:04 编辑

for /f "tokens=1-2" %%a in (a.txt) do set #%%a%%b=1
for /f "tokens=1-2*" %%a in (b.txt) do if defined #%%a%%b echo.%%a %%b %%c

TOP

回复 2# flyinnet9


    可以麻烦写详细一旦是哪个部分进行更改

TOP

回复 3# newbat123


2楼的意思是这样:
  1. @echo off
  2. for /f "tokens=1-2" %%a in (a.txt) do set #%%a%%b=1
  3. (for /f "tokens=1-2*" %%a in (b.txt) do (
  4.     if defined #%%a%%b echo.%%a %%b %%c
  5. ))>result.log
复制代码

TOP

本帖最后由 Nsqs 于 2016-12-27 09:00 编辑
  1. dim read(1),sc(1),m(1,1)
  2. set fso=CreateObject("Scripting.FileSystemObject")
  3. set regexp=new regexp
  4. file=array("a.txt","b.txt")
  5. with regexp
  6.     .Global=-1:.IgnoreCase=-1
  7.     .Pattern="(\d).*(\d).*(\d).*(\d)"
  8.     for list=0 to ubound(file)
  9.         read(list)=.Replace(fso.opentextfile(file(list)).readall,"$1$2$3$4")    '格式化文本剔除其他字符包括空格和特殊字符在内
  10.         sc(list)=split(read(list),vbcrlf)
  11.     next
  12.     .Pattern="((\d{2})\d{2})"
  13.     for list1=0 to ubound(sc(0))
  14.         m(0,0)=.replace(trim(sc(0)(list1)),"$2")
  15.         m(0,1)=.Replace(sc(0)(list1),"$1")
  16.         for list2=ubound(sc(1)) to 0 step -1
  17.             if not .test(sc(0)(list1)) then exit for    '文本行数不一或条件不符则忽略本次比较
  18.             m(1,0)=.replace(trim(sc(1)(list2)),"$2")
  19.             m(1,1)=.Replace(sc(1)(list2),"$1")
  20.             if m(0,0)=m(1,0) then result=result&trim(m(1,1))&vbcrlf    '满足条件提取b.txt数据
  21.         next
  22.     next
  23.     .Pattern="(\d)(\d)(\d)(\d)":result=.Replace(result,"$1 $2 $3 $4")
  24.     .Pattern="^(.*)\n$":if .test(result) then result=.Replace(result,"$1")    '恢复空格间距
  25. end with
  26. fso.createtextfile("new.txt").write result
  27. set fso=nothing:set regexp=nothing
复制代码
来个vbs版

TOP

回复 4# GNU 不好意思 我想请问一下 就是 第一列是1/1/2015 第二列是12:58:11 这样的格式 是不是需要改一下呀

TOP

  1. @echo off
  2. for /f "tokens=1,2 delims= " %%a in (a.txt) do (
  3. findstr "^[%%a].[%%b]" bb.txt
  4. )
  5. pause
复制代码

TOP

回复 7# taofan712
不好意思 我试了一下 不可以呢

TOP

回复 2# flyinnet9
不好意思 我想请问一下 就是 第一列是1/1/2015 第二列是12:58:11 这样的格式 是不是需要改一下呀

TOP

返回列表