2017-10-20 36 views
-2

我還沒有在互聯網上找到任何東西,所以我需要你的幫助。批量比較2個不同的csv文件

我有2個CSV文件,我想比較:

第一個是這樣的:

「姓名」, 「PrimarySmtpAddress」, 「EmailAddresses」

第二個是這樣的:

「Name」,「$ _。TotalItemSize.Value.ToMB()」

輸出文件必須顯示其名稱既在第一和第二文件

,我想有,作爲輸出,在第一文件中的所有數據文件,但與「$ _。 TotalItemSize.Value.ToMB()「添加了每行的結尾。

爲它爲例會做一些這樣

「姓名」, 「PrimarySmtpAddress」, 「EmailAddresses」, 「$ _ TotalItemSize.Value.ToMB()。」

我一定不是很清楚,因爲我的英文不夠完美。 你們能幫我嗎?即時通訊不是很擅長腳本。 非常感謝。

編輯:

REM @echo off 
setlocal enabledelayedexpansion 
set var1 
set var2 

for /f "tokens=1 delims=," %%A in (file2.txt) do (
    set var1=%%A 
    echo %var1% 

    for /f "tokens=1 delims=," %%B in (file1.txt) do (
     set var2=%%B 
     echo %var2% 
     if ("%var1%"=="%var2%") 
     (
     echo equal var 
    ) 
     else 
     (
     echo not equal var 
    ) 
    pause 
    ) 
) 
pause 

它看起來像如果沒有工作

+0

不善於編寫腳本不會免除您做一些研究並顯示出一些努力!注意StackOverflow不是免費的代碼/腳本編寫服務!請閱讀[遊覽]並在這裏學習[問]! – aschipfl

+0

我沒有要求別人爲我做,對不起,如果它看起來像我。 我發現多個主題,人們只想比較行是否相等,在我的情況下,他們是不相同的。只有第一個字段匹配 – user7394492

+0

[您需要一種方式來並行讀取兩個文件](https://stackoverflow.com/a/43005887/2152082)。 – Stephan

回答

0

在1.csv每一行,尋找名2.csv和打印的組合線。
正則表達式可能看起來有點怪你的,它是:

/rc:r =使用正則表達式,c: =使用字符串(必要的,因爲有可能是空格)
^: 「字符串的開始」
\" :文字"
%%~a:在不帶引號的名稱
/":另一個字面"
,:一個litera升,(可選)

"tokens=1,* delims=,"的意思是「把第一個標記爲%%m和所有其餘爲%%n

注:沒有IF。它被findstr替代,它只提取你需要的行。

注:這可能是大文件緩慢(2.csv被多次讀取(儘可能有行1.txt))

@echo off 
setlocal enabledelayedexpansion 
for /f "tokens=1,* delims=," %%a in (1.csv) do (
for /f "tokens=1,* delims=," %%m in ('findstr /rc:"^\"%%~a\"," 2.csv') do (
    echo %%a,%%b,%%n 
) 
) 

名稱,不在這兩個文件,將跳過。

+0

感謝很多人 – user7394492