批处理文件从第一个字段匹配的另一个文件中添加一列,第二个文件具有大列



我需要匹配两个文件的第一列,并将最后五列添加到第一个文件中。

文件-1

Identifier,CandidateNumber,UserName,Language,FirstName,MiddleName,LastName,EmployeeId,Email,Internal,SSOID,CandidateUDF_1,CandidateUDF_2
5101063,62193,5101063,en,test,,test,5101063,test@invalid.com,TRUE,5101063,Ms,

文件-2

Identifier,CandidateSynch,UserSynch,UserSynch,UserSynch,EmployeeUserName,EmployeeUserName,UserName,Password,UserTypeCollection,UserType1,UserType2,UserType3,UserType4,UserType5,UserType6,UserType7,UserType8,UserType9,FirstName,MiddleInitial,LastName,EmployeeNumber,WorkPhone,Email,EmployeeJobTitle,UserGroupCollection,UserGroup1,UserGroup2,Organization,Location,JobRoleCode,EmployeeStatus,UserAccountStatus,ManagerIDCollection,ManagerID,ConfigurationProfileCode,CONFIRMProfile,UDF1,UDF2,UDF3,UDF4,UDF5,UDF6,DEPTID,PersonalEmail,UDF9-Time in RoleFlag,UDF10 - LOB/BU,UDF11 - Band Level,UDF12 - Last StartDate,UDF13 - Impacted ee flag / redeploy ee status
5101063,62193,,,,5101063,5101063,5101063,T3XOROVJ12J6ZJ4,TRUE,,,,,,,,,,test3,,test4,5101063,,testing@invalid.com,test,TRUE,test,test,A5829,17677,27179,CURRENT,ACTIVE,TRUE,5100220,test,FALSE,25,,,8/17/1999,8/17/1999,9/1/2014,A700384,test@invalid.com,TRUE,TLS,,8/17/1999,FALSE

我是Windows批处理脚本的新手,不太熟悉。我试着在下面的代码中测试较小的文件,但它不起作用。

@Echo off&Setlocal EnableExtensions EnableDelayedExpansion
(for /f "tokens=1-5 delims=," %%A in (F:testscriptemployeenetchangecsvtest1.csv) do (
for /f "tokens=1-51 delims=," %%N in ('find "%%A" F:testscriptemployeenetchangecsvtest2.csv') do (
@echo %%A,%%B,%%C,%%D,%%E,%%F,%%G,%%H,%%I,%%J,%%K,%%L,%%N
)
))>>F:testscriptemployeenetchangecsvnewfile3.csv

我必须将列4751从第二个文件复制到第一个文件。

任何帮助都将不胜感激。

此代码执行您的请求:

@echo off
setlocal EnableDelayedExpansion
(for /F "tokens=1* delims=," %%A in (test1.csv) do (
for /F "delims=" %%a in ('findstr /B "%%A," test2.csv') do set "line=%%a"
for %%a in ("!line:,=" "!") do (
set "last5=!last4!,%%~a"
set "last4=!last3!,%%~a"
set "last3=!last2!,%%~a"
set "last2=!last!,%%~a"
set "last=%%~a"
)
echo %%A,%%B,!last5!
)) > newfile3.csv

输出:

Identifier,CandidateNumber,UserName,Language,FirstName,MiddleName,LastName,EmployeeId,Email,Internal,SSOID,CandidateUDF_1,CandidateUDF_2,UDF9-Time in RoleFlag,UDF10 - LOB/BU,UDF11 - Band Level,UDF12 - Last StartDate,UDF13 - Impacted ee flag / redeploy ee status
5101063,62193,5101063,en,test,,test,5101063,test@invalid.com,TRUE,5101063,Ms,,TRUE,TLS,,8/17/1999,FALSE

请注意,此代码的效率非常低,因为它通过findstr外部命令在File2中查找匹配的记录。如果File2(和File1(很大,则此方法可能会花费太多时间。。。

PS-请注意,您没有发布所需的输出文件,所以我无法检查我的输出是否正确。

相关内容

最新更新