批处理获取csv值并将其保存到变量中以供进一步使用

时间:2015-08-19 17:21:35

标签: csv batch-file

我想提取像这样的文件的值:

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文件最简单的方法就是循环,我将值提取到变量中,使用它们并继续下一行,但由于我不熟悉批处理,所以我不会#39 ;不知道这是否是最佳方式。

谢谢

2 个答案:

答案 0 :(得分:1)

在这种情况下,多维数组将成功。由于批处理没有数组功能,但我们可以自己制作!就像这样:

Bundle b=this.getIntent().getExtras();
String[] array=b.getStringArray(key);

让我简要地说明这里发生了什么。多维数组是包含一个或多个数组的数组。最常见的数组看起来像@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 ,它表示元素从0开始计数后的第1个元素
而像array[0]这样的多维数组表示第一个数组的第一个数组(可能听起来令人困惑)。考虑array[0][0] [0] array是行,[0] [0] 是列,因此{{1} }表示第2行,第3列。 (*画一张桌子并练习)

答案 1 :(得分: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