【问题标题】:Store file output into variable将文件输出存储到变量中
【发布时间】:2011-01-03 11:55:59
【问题描述】:

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

我使用的是 Windows 2003 Server。

文本文件有多行,例如:

10.20.210.100 fish
10.20.210.101 rock

我正在使用:

Set /P var=<file.txt

它只读取文件的第一行。

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

【问题讨论】:

    标签: windows batch-file cmd


    【解决方案1】:

    没有简单的方法可以将文件的完整内容放入一个变量中。 变量的长度限制为 ~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!
    

    【讨论】:

    • 同样的事情可以通过非常简单的方式来实现。但这并不能解决我的问题。
    • 但是您的具体问题是什么?如果您可以逐行阅读文件,则可以检查每一行。
    • 我的目标是将所有行分配给单个变量或每个变量的每一行。
    • 感谢杰布。但是,如果您回显 %line% 它包含文件时间中的每一行行号。如果你使用回声!线! ,它包含一个 !line!也与其他线路。我对脚本做了一些修改,现在我得到了预期的结果。
    【解决方案2】:

    Jeb 的脚本运行完美,但是如果你回显 %line%,它包含文件时间中的每一行。如果你使用 echo !Line! ,它包含一个 !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%
    

    现在您将在机器人案例中得到相同的结果。

    【讨论】:

      猜你喜欢
      • 2018-01-02
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 2018-01-27
      • 2023-02-13
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多