我有一个包含字符串的文本文件,我需要创建一个变量。我需要将“文件”的值保留为变量。如何捕获此变量并将其设置为变量:“ \ 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
答案 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\
\
被解释为转义字符,因此,输入文件中\
的 double .Replace('\', '\\')
。
结果是一个哈希表(类型[hashtable]
); Get-Content -Raw
-以单个字符串读取的输入文件-用于确保输出单个哈希表);访问其file
键可检索关联的值。