我需要获取文件的内容并将标准输出重定向到变量

时间:2014-02-10 17:23:43

标签: batch-file redirect set echo pipe

我需要获取文件的内容并将标准输出重定向到变量。我正在制作一个MTG Deck模拟器,你和一个芽以这种格式在.txt文件中编写你的套牌:

numberofcards

nameofcard

numberofcards

nameofcard

numberofcards

nameofcard

像那样......

如果您不知道MTG是什么,只是帮我弄清楚如何逐行获取文件的内容并将其放入变量中。现在我正在使用我从程序中调用的另一个实用程序。它现在回显文件内容,put不会将它放入变量中。也许我们可以在那里工作并将回声输入到一个set命令中?

我无法弄明白......

echo%line%|设置行%lineccounter%=

1 个答案:

答案 0 :(得分:0)

通常的做法是

for /f "usebackq delims=" %%x in ("file.txt") do set "var=%%x"

这会将文件中的第一个值输入变量。并且在变量的每次迭代中都会被下一行的内容覆盖。要将所有文件存储在内存中,我们需要模拟一个数组(不,批处理中没有数组,但可以模拟)

定义一个计数器,对于文件中的每一行,递增计数器并使用它来创建模拟数组的变量的名称。将此变量的值设置为readed文件的内容

setlocal enabledelayedexpansion

set "count=0"
for /f "usebackq delims=" %%x in ("file.txt") do (
    set /a "count+=1"
    set "line[!count!]=%%x"
)

对于没有计数器的替代方案,findstr可用于计算行

for /f "usebackq tokens=1,* delims=:" %%x in ('findstr /n "^" "file.txt"') do set "line[%%x]=%%y"

在这种情况下,readed线来自findstr输出,数字前缀在行中并用冒号分隔。此冒号用作分隔符,用于将数字与数据分开,并重新创建与前一种情况相同的结构。