繁体   English   中英

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

[英]Batch Script or PowerShell script to read the multiple values from text file and insert into variables

我正在寻找一个批处理脚本或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%

请提供一些见解或想法

代码几乎没问题,除了:

  • 如果在双引号中指定输入文件,则需要usebackq选项
  • echo %G%应该是echo !%%G! 当然,您需要在脚本开头或循环之前使用setlocal enableDelayedExpansion
    或者在您的情况下,您只需在%%H打印该值即可。
  • use ()用于多行for循环,否则用&在同一行上分隔命令
  • 如果值具有特殊字符,请在下面的代码中使用set引号。
  • 使用echo. 打印可能为空的行( /:(可用于代替点)

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

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

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

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

  1. 要在for循环中读取input.txt内容 ,您需要type文件。

  2. 你的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

用法示例:

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

用法示例:

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

F:\test>test
VALUE1
VALUE2
VALUE3

进一步阅读

如果要使用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

比批处理文件更优雅:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM