我目前需要解析sysprep.inf文件并插入最终用户输入的值。 我正在使用AutoIT对此实用程序进行编码,而我的正则表达式略有不同。 我需要修改的一行如下:
ComputerName=%DeviceName%
DeviceName是LANDesk注入的变量。如果设备先前已在LANDesk数据库中,则将名称注入到文件中。如果不是,则保留变量名称。设备名称必须在=
以下是我当前代码的片段:
$FileContents = StringRegExpReplace($FileContents,'ComputerName=[a-z]','ComputerName='& $deviceNameInput)
感谢任何人提供的任何指导。
答案 0 :(得分:2)
我不熟悉AutoIT或BASIC ......但看起来你需要使用这样的东西:
$FileContents = StringRegExpReplace($FileContents,'.*ComputerName=(\%[a-zA-Z]*\%).*', $deviceNameInput)
OR
$FileContents = StringRegExpReplace($FileContents,'ComputerName=\%[a-zA-Z]*\%', 'ComputerName='&$deviceNameInput)
这只会替换a-z或A-Z的设备名称。不是数字或包含空格。
答案 1 :(得分:2)
编写正则表达式可能很难,因为有很多正则表达式的方言。假设您正在使用支持类似Perl的方言的正则表达式库,您可能希望尝试使用此正则表达式:
^\s*ComputerName\s*=\s*(?:%DeviceName%|[a-zA-Z0-9_-]+)
基本上,此正则表达式将匹配文字字符串ComputerName=%DeviceName%
或ComputerName=<some actual device name that only contains the characters a-z, A-Z, 0-9, _, and ->
。这个正则表达式也有点宽松,因为它将匹配在行的开头以及等号之前和/或之后包含空格的行。下图更详细地解释了此正则表达式的组件。
P.S。该图像由RegexBuddy生成,这是一个出色的正则表达式IDE。
答案 2 :(得分:1)
Autoit有一个处理ini文件的好方法 - IniWrite
IniWrite("SysPrep.ini", "write_section_here", "ComputerName", $deviceNameInput)
使用以下命令创建或更新SysPrep.ini:
[write_section_here]
ComputerName=localhost