从文本文件中选择字符串并创建变量

时间:2019-03-04 21:48:14

标签: powershell

我有一个包含字符串的文本文件,我需要创建一个变量。我需要将“文件”的值保留为变量。如何捕获此变量并将其设置为变量:“ \ APPSRV \ I \ Run \ OPTI \ CLIENT \ 20171031 \ 25490175 \ Data \ brtctybv \”。此数据将随文件而变化,但将保持相同的格式,以\开头,以\

结尾

示例文本文件

order_id = 25490175-brtctybv
file     = \\APPSRV\I\Run\OPTI\CLIENT\20171031\25490175\Data\brtctybv\
copies   = 1
volume   = 20171031-brtctybv
label    = \\domain.com\prodmaster\jobs\OPTI\CLIENT\Cdlab\somefile.file
merge    = \\APPSRV\I\Run\OPTI\CLIENT\20171031\25490175\mrg\25490175-brtctybv.MRG
FIXATE   = NOAPPEND

2 个答案:

答案 0 :(得分:1)

$file = ((Get-Content -path file.txt) | Select-String -pattern "^file\s*=\s*(\\\\.*\\)").matches.groups[1].value
$file

请参见Regex Demo以查看正则表达式的作用。 .matches.groups[1].value正在获取捕获组1的值。捕获组是由模式中的()创建的。有关cmdlet的更多信息,请参见Select-String

答案 1 :(得分:0)

正则表达式功能强大,但复杂;有时在概念上更简单的选择:

PS> ((Get-Content -Raw file.txt).Replace('\', '\\') | ConvertFrom-StringData).file

\\APPSRV\I\Run\OPTI\CLIENT\20171031\25490175\Data\brtctybv\
  • ConvertFrom-StringData cmdlet用于解析由=

  • 分隔的键值对。 值中的
  • \被解释为转义字符,因此,输入文件中\ double .Replace('\', '\\')

  • 结果是一个哈希表(类型[hashtable]); Get-Content -Raw-以单个字符串读取的输入文件-用于确保输出单个哈希表);访问其file键可检索关联的值。