1

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

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”和其他类似的数据集?

4

2 回答 2

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
   )
  )
 )

您似乎只需要修改源目录和目标目录以适应您的情况。

于 2013-03-16T11:35:16.803 回答
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 %1and之间的一个制表!arr[%2]!符,但您可以使用任何您认为合适的分隔符。

于 2013-03-17T14:40:26.173 回答