如何在批处理文件中从文本文件创建数组?

时间:2012-02-25 22:27:13

标签: batch-file

我有一个包含以下数据的txt文件

aaaa 1000 2000
bbb  3000 4000
cccc 5000 
ddd  6000 7000 8000 

此文件中的行数不固定。

我需要数组中每行的第一个标记并打印每个元素。

3 个答案:

答案 0 :(得分:13)

创建数组:

setlocal EnableDelayedExpansion

set i=0
for /F %%a in (theFile.txt) do (
   set /A i+=1
   set array[!i!]=%%a
)
set n=%i%

打印数组元素:

for /L %%i in (1,1,%n%) do echo !array[%%i]!

如果要将数组名称和长度作为子例程参数传递,请使用以下方法:

call theSub array %n%

:theSub arrayName arrayLen
for /L %%i in (1,1,%2) do echo !%1[%%i]!
exit /B

答案 1 :(得分:2)

试试这个:

@echo off
for /F "tokens=1,2*" %%x in  (myFile.txt) do echo %%x

批处理文件中需要使用双%,但您可以使用单个%在cmd行上对其进行测试。

简而言之,for将迭代myFile.txt使用默认分隔符(空格)将每一行分成两个标记。

答案 2 :(得分:0)

尝试这个并从任何地方调用它

@echo off

for /f "usebackq" %%a in ('%2') do set d=%%~a
for /f "usebackq tokens=* delims=%d%" %%G in ('%3')  do set %1=%%~G

set /a i=-1


for %%h in (!%1!) do (
set /a i+=1
set %1[!i!]=%%h
)