[英]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
打印该值即可。 ()
用于多行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%
您的批处理文件已关闭,但需要进行一些调整:
要在for
循环中读取input.txt
的内容 ,您需要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
用法示例:
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.