我想提取像这样的文件的值:
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 ;不知道这是否是最佳方式。
谢谢
答案 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