首页 文章

批处理脚本或PowerShell脚本,用于从文本文件中读取多个值并插入到变量中

提问于
浏览
1

我正在寻找一个批处理脚本或PowerShell脚本,它从文本文件中读取值并将它们放在脚本局部变量中 .

例如,输入文件如下所示:

input.txt
PARAM1=VALUE1
PARAM2=VALUE2
PARAM3=VALUE3

在脚本中,我想将值放入三个不同的变量,如:

echo %variable1%
echo %variable2%
echo %variable3%

输出将是:

value1
value2
value3

我开始编写脚本:

@echo off
setlocal
for /f "delims== tokens=1,2" %%G in ("input.txt") do set %%G=%%H  echo %G%

请提供一些见解或想法

3 回答

  • 1

    我想从文件中读取值并将它们分配给脚本局部变量 .

    @echo关闭
    SETLOCAL
    for / f“delims == tokens = 1,2”%% G in(“input.txt”)do set %% G = %% H echo%G%

    您的批处理文件已关闭,但需要进行一些调整:

    • 为了读取 for 循环中 input.txtcontents ,您需要 type 该文件 .

    • 你的 echo 命令有错误,它应该是 %%G 而不是 %%H .


    显示变量名称

    test.cmd:

    @echo off 
    setlocal
    for /f "delims== tokens=1,2" %%G in ('type input.txt') do (set %%G=%%H && echo %%G)
    endlocal
    

    Example usage:

    F:\test>type input.txt
    PARAM1=VALUE1
    PARAM2=VALUE2
    PARAM3=VALUE3
    
    F:\test>test
    PARAM1
    PARAM2
    PARAM3
    

    要显示变量的值,请将echo %% G替换为echo %% H.

    test.cmd:

    @echo off 
    setlocal
    for /f "delims== tokens=1,2" %%G in ('type input.txt') do (set %%G=%%H && echo %%H)
    endlocal
    

    Example usage:

    F:\test>type input.txt
    PARAM1=VALUE1
    PARAM2=VALUE2
    PARAM3=VALUE3
    
    F:\test>test
    VALUE1
    VALUE2
    VALUE3
    

    进一步阅读

  • 2

    代码几乎没问题,除了:

    如果在双引号中指定输入文件,则需要

    • usebackq 选项

    • echo %G% 应该是 echo !%%G! ,当然你需要在脚本开头或循环之前使用setlocal enableDelayedExpansion .
      或者在您的情况下,您只需在 %%H 中打印该值即可 .

    • 使用 () 用于多行for循环,否则在同一行上用 & 分隔命令

    • set 中使用引号,如下面的代码所示,以防值具有特殊字符 .

    • 使用 echo. 打印可能为空的行( /:( 可用于代替点)

    for /f "delims== tokens=1,2 usebackq" %%G in ("input.txt") do (
        set "%%G=%%H"
        echo.%%H
    )
    
  • 0

    如果要使用PowerShell语法可以是:

    $InputText = Get-Content "C:\Temp\input.txt"
    
    $i=0 #add inkrement 
    ForEach ($line in $InputText)
    {   
         $i++ #increment for variable numbers
         ($line -split "=")[1] | Set-Variable -Name ("variable$i")
    }
    #Show variables
    $variable1
    $variable2
    #and so
    

    比批处理文件更优雅:)

相关问题