将文件输出存储到变量中

时间:2011-01-03 11:56:00

标签: windows batch-file cmd

我想将文本文件的输出存储到变量中,因此我可以将整个文件作为参数传递。

我正在使用Windows 2003 Server。

文本文件有多行,如:

10.20.210.100 fish
10.20.210.101 rock

我正在使用:

Set /P var=<file.txt

它只读取文件的第一行。

我尝试使用FOR循环,但它只为变量分配了最后一行。

2 个答案:

答案 0 :(得分:2)

没有简单的方法可以将文件的完整内容整合到一个变量中。 变量的长度限制为~8100。 将CR / LF变为变量

很复杂

但是使用FOR循环,你可以获得每一行。

请查看batch script read line by line

修改 要在单个变量中获取每一行,您可以使用此

@echo off
SETLOCAL EnableDelayedExpansion
set n=0
for /f "delims=" %%a IN (example.txt) do (
  set /a n+=1
  set "line[!n!]=%%a"
  echo line[!n!] is '%%a'
)
set line

或只获得一个变量(没有CR / LF)

@echo off
SETLOCAL EnableDelayedExpansion
set "line="
for /f "delims=" %%a IN (example.txt) do (
  set "line=!line! %%a"
)
echo !line!

答案 1 :(得分:0)

Jeb的脚本工作正常,但是如果你回显%line%它包含文件时间中每一行的行号。如果你使用echo!Line! ,它包含一个!行!也与其他线路。我在脚本中做了一点修改,现在我得到了预期的结果。

@echo off
SETLOCAL EnableDelayedExpansion
set "line="
for /f "delims=" %%a IN (example.txt) do (
set "line1=%%a"
set "line=!line1! and  %%a"
)
echo !line!

echo %line%

现在你将在机器人案件中获得相同的结果。