Batch file 尝试用逻辑合并文件以填充丢失的数据。*构建平面数据库?

Batch file 尝试用逻辑合并文件以填充丢失的数据。*构建平面数据库?,batch-file,cmd,Batch File,Cmd,我正在尝试用逻辑合并文件,以填充丢失的数据。我是 如果错误级别if errorlevel出现问题 @echo off SETLOCAL enableDelayedExpansion del /q porttemp.csv del /q database.csv rem CMD BATCH-FILE Trying to merge files with logic to fill missing data. rem * building a flat database ? rem *** Re

我正在尝试用逻辑合并文件,以填充丢失的数据。我是 如果错误级别
if errorlevel出现问题

@echo off
SETLOCAL enableDelayedExpansion
del /q porttemp.csv
del /q database.csv
rem CMD BATCH-FILE Trying to merge files with logic to fill missing data. 
rem * building a flat database ? 
rem *** Reading temp3.csv looking for match in temp4.csv, ie 34/0/23 
rem *** if not found trying to add "blank" to output file 
echo ********* Phase 1 begin *******
:part1
FOR /F  "tokens=1,2,3,4* delims=," %%a IN (temp3.csv) do (
    rem parse thru temp3.csv
    echo LOOP 1 - %%a,%%b,%%c,%%d
    for /F "tokens=1,2* delims=, " %%M in (temp4.csv) do (

        rem is %%a found in temp4.csv
        rem if true output %%a,%%b,%%c,%%M
        rem if false output %%a,%%b,%%c,blank
        findstr %%a temp4.csv 
        if /I ERRORLEVEL EQU 0 (echo %%a,%%b,%%c,%%M >> porttemp.csv) ELSE (echo %%a,%%b,%%c,blank >> porttemp.csv)
        echo Loop 2 - debug output - %ERRORLEVEL% -%%a,%%b,%%c vs %%M,%%N
        pause
        )
)
type porttemp.csv
temp3.csv包含:

Gi-34/0/10_,lpu,w-3-018ch1swA2p19_lag Gi-34/0/11_,lpu,prodca1_lan_sec
Gi-34/0/12_,lpu,prodca2_lan_sec Gi-34/0/13_,lpd, Gi-34/0/14_,lpd,
Gi-34/0/15_,lpd, Gi-34/0/16_,lpd, Gi-34/0/17_,lpd,
Gi-34/0/18_,lpu,aix_to_hmc Gi-34/0/19_,lpu,prodcafl1_lan_sec
Gi-34/0/02_,lpu,w-3-016ch1swA2p19_lag
Gi-34/0/20_,lpu,prodcafl2_lan_sec Gi-34/0/21_,lpu,prodcafl3_lan_sec
Gi-34/0/22_,lpu,prodcafl4_lan_sec Gi-34/0/24_,lpd,
Gi-34/0/25_,lpu,CHARONHOST2_DARLA Gi-34/0/26_,lpu,Centera_c001n03
Gi-34/0/27_,lpu,Centera_c001n01 Gi-34/0/28_,lpu,Centera_c001n02
Gi-34/0/29_,lpu,Centera_c001n04 Gi-34/0/03_,lpu,w-3-016ch2swA1p19_lag
Gi-34/0/30_,lpu,Centera_c002n03 Gi-34/0/31_,lpu,Centera_c002n02
Gi-34/0/32_,lpu,Centera_c002n04 Gi-34/0/33_,lpu,Centera_c002n01
Gi-34/0/34_,lpu,CHARONHOST2 Gi-34/0/35_,lpd, Gi-34/0/36_,lpd,
Gi-34/0/37_,lpd, Gi-34/0/38_,lpu,TMC_Flex7_cmm2
Gi-34/0/39_,lpu,TMC-TPC_Sec
98be:947e:257c,Gi-34/0/18_ 5cf3:fc39:a194,Gi-34/0/23_
aa00:0400:64a4,Gi-34/0/25_ d43d:7e7d:8e4e,Gi-34/0/26_
d43d:7ec1:f280,Gi-34/0/27_ d43d:7e7d:9770,Gi-34/0/28_
temp4.csv文件包含:

Gi-34/0/10_,lpu,w-3-018ch1swA2p19_lag Gi-34/0/11_,lpu,prodca1_lan_sec
Gi-34/0/12_,lpu,prodca2_lan_sec Gi-34/0/13_,lpd, Gi-34/0/14_,lpd,
Gi-34/0/15_,lpd, Gi-34/0/16_,lpd, Gi-34/0/17_,lpd,
Gi-34/0/18_,lpu,aix_to_hmc Gi-34/0/19_,lpu,prodcafl1_lan_sec
Gi-34/0/02_,lpu,w-3-016ch1swA2p19_lag
Gi-34/0/20_,lpu,prodcafl2_lan_sec Gi-34/0/21_,lpu,prodcafl3_lan_sec
Gi-34/0/22_,lpu,prodcafl4_lan_sec Gi-34/0/24_,lpd,
Gi-34/0/25_,lpu,CHARONHOST2_DARLA Gi-34/0/26_,lpu,Centera_c001n03
Gi-34/0/27_,lpu,Centera_c001n01 Gi-34/0/28_,lpu,Centera_c001n02
Gi-34/0/29_,lpu,Centera_c001n04 Gi-34/0/03_,lpu,w-3-016ch2swA1p19_lag
Gi-34/0/30_,lpu,Centera_c002n03 Gi-34/0/31_,lpu,Centera_c002n02
Gi-34/0/32_,lpu,Centera_c002n04 Gi-34/0/33_,lpu,Centera_c002n01
Gi-34/0/34_,lpu,CHARONHOST2 Gi-34/0/35_,lpd, Gi-34/0/36_,lpd,
Gi-34/0/37_,lpd, Gi-34/0/38_,lpu,TMC_Flex7_cmm2
Gi-34/0/39_,lpu,TMC-TPC_Sec
98be:947e:257c,Gi-34/0/18_ 5cf3:fc39:a194,Gi-34/0/23_
aa00:0400:64a4,Gi-34/0/25_ d43d:7e7d:8e4e,Gi-34/0/26_
d43d:7ec1:f280,Gi-34/0/27_ d43d:7e7d:9770,Gi-34/0/28_

我不知道你怎么把事情搞得太复杂了。如果在搜索temp4.csv之前将var设置为空,并且只有流程在temp4.csv中找到,则不需要If:

@echo off
SETLOCAL enableDelayedExpansion
del /q porttemp.csv
del /q database.csv
rem CMD BATCH-FILE Trying to merge files with logic to fill missing data. 
rem * building a flat database ? 
rem *** Reading temp3.csv looking for match in temp4.csv, ie 34/0/23 
rem *** if not found trying to add "blank" to output file 
echo ********* Phase 1 begin *******
:part1
FOR /F  "tokens=1-4* delims=," %%a IN (temp3.csv) do (
    rem parse thru temp3.csv
    echo LOOP 1 - %%a,%%b,%%c,%%d
    Set "BlankorM="
    for /F "tokens=1,2* delims=, " %%M in (
      'Findstr /I "%%a" temp4.csv' 
    ) do Set "BlankorM=%%M"
    echo %%a,%%b,%%c,!BlankorM! >> porttemp.csv
)
type porttemp.csv

这是一个版本,类似于LotPings,但删除了实际最终目标不必要的内容:

@Echo关闭
SetLocal EnableDelayedExpansion
(对于/F“UseBackQ Tokens=1-3 Delims=,”%%A In(“temp3.csv”)Do(设置为“\uq=blank”)
对于/F“Delims=,”%%D In('Find/I“%%A”^