2015-08-19 64 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 
相关问题