合并具有部分匹配文件名的数据

时间:2013-03-16 03:20:19

标签: batch-file merge match

我有许多具有部分匹配文件名的数据文件,例如

T70M1U1-cell.txt
T70M1U1-anode.txt
T80M5U1-cell.txt
T80M5U1-anode.txt
...

“T70M1U1-cell.txt”包含

A
B
C

和 “T70M1U1-anode.txt”包含

1
2
3

我想将两个数据集合并为一个“T70M1U1.txt”,其中包含:

A    1
B    2
C    3 

如何使用批次或软件批量合并两个数据集“T70M1U1-cell.txt& T70M1U1-anode.txt”以及其他类似数据?

2 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL
SET source=c:\sourcedir
SET dest=c:\destdir
FOR /f "delims=-" %%a IN (
 'dir /b/a-d "%source%\*-cell.txt"'
 ) DO IF EXIST "%source%\%%a-anode.txt"  (
 FOR /f "tokens=1*delims=:" %%p IN ('findstr /n /r "$" ^<"%source%\%%a-cell.txt"') DO (
   FOR /f "tokens=1*delims=:" %%s IN ('findstr /n /r "$" ^<"%source%\%%a-anode.txt"') DO (
   IF %%p==%%s >>"%dest%\%%a.txt" ECHO %%q %%t
   )
  )
 )

您需要修改的所有内容都是适合您情况的源和目标目录。

答案 1 :(得分:0)

@echo off
setlocal enabledelayedexpansion

cd "dir\containing\txtfiles"

for %%I in (*-cell.txt) do (
    set arr.length=0
    set file=%%~nxI
    set dest=!file:-cell.txt=.txt!
    if exist "!dest!" del "!dest!"
    for /f "usebackq" %%a in ("!file:cell.txt=anode.txt!") do (
        set "arr[!arr.length!]=%%a"
        set /a "arr.length+=1"
    )
    set idx=0
    for /f "usebackq" %%a in ("%%I") do (
        >>"!dest!" call :dump %%a !idx!
        set /a "idx+=1"
    )
)
goto :EOF

:dump
echo %1 !arr[%2]!

在最后一行中,它应该是echo %1!arr[%2]!之间的标签,但您可以使用您认为合适的分隔符。