批处理 - 将特定文本从一个文件复制到另一个文件

时间:2014-01-31 10:44:28

标签: batch-file text cmd copy

我需要一些关于下面这个问题的帮助,并且作为一个批量菜鸟我不知道如何做到这一点:

我有两个.txt文件,第一个包含:

  • 1207,nameofsomething1,垃圾,
  • 1208,nameofsomething2,垃圾,
  • 1209,nameofsomething3,垃圾,

在第二个txt文件中有以下内容:

  • 16987,nameofsomething1,垃圾,
  • 16988,nameofsomething2,垃圾,
  • 16989,nameofsomething3,垃圾,

我想让批处理文件从第一个txt文件中搜索第二列中的名称(nameofsomething1& beyond),复制它之前的数字并替换第一列中的第二个.txt中的数字名。第二个txt文件混乱了更多我不想触摸的信息,我只需要更改数字。谢谢你的帮助

2 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL
:: remove variables starting $
FOR  /F "delims==" %%a In ('set $ 2^>Nul') DO SET "%%a="
FOR /f "tokens=1,2delims=," %%a IN (q21478068.txt) DO SET "$%%a=%%b"
(
FOR /f "tokens=1,2*delims=," %%a IN (q214780682.txt) DO (
 SET "replaced="
 FOR  /F "tokens=1*delims=$=" %%r In ('set $') DO IF "%%b"=="%%s" SET replaced=Y&ECHO(%%r,%%b,%%c
 IF NOT DEFINED replaced ECHO(%%a,%%b,%%c
 )
)>newfile.txt
GOTO :EOF

q21478068.txt是您的第一个文件,q214780682.txt是您的第二个文件。 newfile.txt已创建。

答案 1 :(得分:0)

在示例文件上对此进行测试:file1.txtfile2.txt并重写file2.txt

nameofsomething是您所在行中的术语。

这使用名为repl.bat的帮助程序批处理文件 - 从https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat

下载

repl.bat放在与批处理文件相同的文件夹中或放在路径上的文件夹中。

@echo off
for /f "tokens=1,2 delims=," %%a in ('find "nameofsomething" ^<"file1.txt" ') do (
   type "file2.txt" |repl "^.*(,%%b,.*)" "%%a$1" >file.tmp
   move file.tmp "file2.txt"
)
pause