2017-12-04 25 views
0

以下のデータを含む2つのCSVファイルがあります。 .cmdバッチファイルを使用して新しいCSVファイルに3列目と4列目を追加します。 .cmdバッチファイルで実行することは可能ですか?はいの場合はコードを教えてください。cmdでcsvカラムを追加する

File1.csv

SL,Name,Score,Result 
1,Saquib,10,100 
2,Tanzil,10,100 
3,Hasib,10,100 
4,Sharek,10,100 

File2.csv

SL,Name,Score,Result 
1,Saquib,20,200 
2,Tanzil,30,300 
3,Hasib,40,400 
4,Sharek,50,500 

出力は以下のようになります。 Combine.csv

SL,Name,Score,Result 
1,Saquib,30,300 
2,Tanzil,40,400 
3,Hasib,50,500 
4,Sharek,60,600 

私は2つのファイルを結合し、コードを持っていますが、フィールドを追加しないでください。

@echo off 
ECHO Set working directory 
pushd %~dp0`enter code here` 
ECHO Deleting existing combined file 
del combined.csv 
setlocal ENABLEDELAYEDEXPANSION 
set cnt=1 
for %%i in (*.csv) do (
    if !cnt!==1 (
    for /f "delims=" %%j in ('type "%%i"') do echo %%j >> combined.csv 
) else if %%i NEQ combined.csv (
    for /f "skip=1 delims=" %%j in ('type "%%i"') do echo %%j >> combined.csv 
) 
    set /a cnt+=1 
+1

同一でない場合、たとえば、あなたの質問に答えるために...ハッシュテーブルを使用して同じです。はい、可能です。 – aschipfl

+0

ハハありがとう。コードを共有できますか? – user3142783

答えて

0

バッチは、このタイプの操作のスクリプト言語ではないため、powershellなどの言語を使用する方が高速で簡単です。二つのファイルの最初の2つの列を想定し

例は

$table1 = import-csv file1.csv 
$table2 = import-csv file2.csv 

# convert Score Result columns to type int 
$table1 |% { $_.Score = [int]$_.Score; $_.Result = [int]$_.Result } 
$table2 |% { $_.Score = [int]$_.Score; $_.Result = [int]$_.Result } 

# add score and result for each row respectively 
for ($i=0;$i -lt $table1.count;$i++) { 
    $table1[$i].Score += $table2[$i].Score 
    $table1[$i].Result += $table2[$i].Result 
} 

# export 
$table1 | export-csv output.txt 

または、最初の列が

$table1=import-csv file1.csv 
[email protected]{} 

foreach($r in $table1) { 
    $r.Score = [int]$r.Score; 
    $r.Result = [int]$r.Result; 
    $htable[$r.SL] = $r; 
} 

$table2=import-csv file2.csv 
foreach($r in $table2) { 
    $r.Score = [int]$r.Score + $htable[$r.SL].Score; 
    $r.Result = [int]$r.Result + $htable[$r.SL].Result; 
    $htable[$r.SL] = $r; 
} 

$htable.Values | export-csv output.txt 
+0

ありがとうございますが、それは7のような古いウィンドウで動作しますか? – user3142783

関連する問題