2015-08-19 62 views
0

我想提取這樣一個文件的值:批量獲取CSV值,並將其保存到變量進一步使用

4564,cde0 
7578,Kernel 
123465,Performer 
INFO,Kernel 

我想將數據放入一個CSV文件將是最簡單的選項,但如果有更簡單的方法來獲取變量中的值,我很樂意提供建議。我將有超過四行...

我想使用的值: 從第1行我需要4564和cde0在單獨的變量。 把它們放在我的腳本中,然後繼續第二行,等等。

我已經找到了幾個威脅誰與列處理和現在我有以下代碼:

for /F "tokens=1-2 delims=," %%a in (test.csv) do (@echo %%a %%b) 

但是,這只是表明我沒有「」內容。

有沒有辦法通過一條線並將兩個值放入兩個變量中?

如果是這樣,我認爲通過csv文件最簡單的方法是將值提取到變量中,使用它們並繼續下一行,但由於我對批次不是很熟悉,不知道這是否是最好的方式。

謝謝

+0

根據你需要做的下一步變量,可以避免使用臨時的「數組」(批處理文件沒有數組,所以你最終會有大量的編號變量),並在一個循環中處理數據。如何通過後續/總體任務的簡短摘要來爲問題添加ps? – wOxxOm

回答

0

在這種情況下,多維數組將會訣竅。由於批次沒有陣列功能,但我們可以自己做!就像這樣:

@echo off 
setlocal enabledelayedexpansion 

set var1=0 

for /F "tokens=1* delims=," %%a in (text.csv) do (
    set var2=0 
    set array[!var1!][!var2!]=%%a 
    set /a var2+=1 
    set array[!var1!][!var2!]=%%b 
    set /a var1+=1 
) 

echo First column, First element: %array[0][0]% 
echo First column, Second element: %array[0][1]% 
echo Second column, First element: %array[1][0]% 
echo Second column, Second element: %array[1][1]% 

pause >nul 

讓我簡要說明一下這裏發生了什麼。多維數組是包含一個或多個數組的數組。最常見的陣列看起來像array[0],其指示第一元件由於元件從0

計數雖然像array[0][0]多維數組表示第一陣列的第一陣列(5聽起來有點混亂)。想想array[0][0]是行,array[0][0]是列,所以array[1][2]表示第2行第3列。 (*繪製表格和練習)

+0

謝謝你,這非常有用!不幸的是,我不能投票給你,因爲我沒有足夠的聲譽...... –

+0

那麼,你可以標記答案爲接受(蜱),並且你得到** + 2 **代表。 –

0
C:>type test.csv 
4564,cde0 
7578,Kernel 
123465,Performer 
INFO,Kernel 

C:>type g.bat 
@echo off 
SETLOCAL ENABLEDELAYEDEXPANSION 

for /F "tokens=1-2 delims=," %%a in (test.csv) do (
    set FIRST_VALUE=%%a 
    set SECOND_VALUE=%%b 

    echo FIRST_VALUE is !FIRST_VALUE! and SECOND_VALUE is !SECOND_VALUE! 
) 

C:>g.bat 
FIRST_VALUE is 4564 and SECOND_VALUE is cde0 
FIRST_VALUE is 7578 and SECOND_VALUE is Kernel 
FIRST_VALUE is 123465 and SECOND_VALUE is Performer 
FIRST_VALUE is INFO and SECOND_VALUE is Kernel 
相關問題