所以,很久以前我真的进入批处理文件。我回到那里,但对于我的生活,我无法找到从文件中获取文本行的首选方式。
它是这样的:
(
set /p %var1%=
set /p %var2%=
)>textfile.txt
谢谢。
答案 0 :(得分:1)
糟糕! : - )
您正在尝试从文件中读取,而不是写入文件。因此,您需要<
,而不是>
。
此外,您只在扩展变量时使用百分比,而不是在定义变量时使用百分比。
最后,您应该在阅读之前明确地取消定义任何先前的值,因为读取空行将保留任何现有的变量值。
(
set "var1="
set /p "var1="
set "var2="
set /p "var2="
) <textfile.txt
正如rojo在他的评论中所说,如果你正在阅读任意数量的行,你可能最好使用数组概念。但是,您必须首先确定要读取的总行数。
@echo off
setlocal enableDelayedExpansion
:: Determine number of lines
for /f %%N in ('find /c /v "" <textfile.txt') do set "cnt=%%N"
:: Read the file into an array
<textfile.txt (
for /l %%N in (1 1 %cnt%) do (
set "str.%%N="
set /p "str.%%N="
)
)
:: Display the array values
for /l %%N in (1 1 %cnt%) do echo(!str.%%N!)
使用SET / P是将文件读入变量的最快方法,它避免了FOR / F关于空行的问题,如果启用了延迟扩展,则!
被破坏。但SET / P有其自身的局限性: