我需要一些关于下面这个问题的帮助,并且作为一个批量菜鸟我不知道如何做到这一点:
我有两个.txt文件,第一个包含:
在第二个txt文件中有以下内容:
我想让批处理文件从第一个txt文件中搜索第二列中的名称(nameofsomething1& beyond),复制它之前的数字并替换第一列中的第二个.txt中的数字名。第二个txt文件混乱了更多我不想触摸的信息,我只需要更改数字。谢谢你的帮助
答案 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.txt
和file2.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