我需要获取文件的内容并将标准输出重定向到变量。我正在制作一个MTG Deck模拟器,你和一个芽以这种格式在.txt文件中编写你的套牌:
numberofcards
nameofcard
numberofcards
nameofcard
numberofcards
nameofcard
像那样......如果您不知道MTG是什么,只是帮我弄清楚如何逐行获取文件的内容并将其放入变量中。现在我正在使用我从程序中调用的另一个实用程序。它现在回显文件内容,put不会将它放入变量中。也许我们可以在那里工作并将回声输入到一个set命令中?
我无法弄明白......
echo%line%|设置行%lineccounter%=
答案 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输出,数字前缀在行中并用冒号分隔。此冒号用作分隔符,用于将数字与数据分开,并重新创建与前一种情况相同的结构。