0

現在、sysprep.inf ファイルを解析し、エンド ユーザーが入力した値を挿入する必要があります。私は AutoIT を使用してこのユーティリティをコーディングしていますが、私の正規表現は少しずれています。修正が必要な行は次のとおりです。

ComputerName=%DeviceName%

DeviceName は、LANDesk によって挿入される変数です。デバイスが以前に LANDesk データベースにあった場合、名前がファイルに挿入されます。そうでない場合は、変数名が残ります。デバイス名は、=

ここに私の現在のコードのスニペットがあります:

$FileContents = StringRegExpReplace($FileContents,'ComputerName=[a-z]','ComputerName='& $deviceNameInput)

誰でも提供できるガイダンスをありがとう。

4

3 に答える 3

2

私はAutoITやBASICに精通していません...しかし、次のようなものを使用する必要があるようです。

$FileContents = StringRegExpReplace($FileContents,'.*ComputerName=(\%[a-zA-Z]*\%).*', $deviceNameInput)

また

$FileContents = StringRegExpReplace($FileContents,'ComputerName=\%[a-zA-Z]*\%', 'ComputerName='&$deviceNameInput)

これは、azまたはAZのデバイス名のみを置き換えます。数値またはスペースを含まない。

于 2013-03-19T20:43:35.130 に答える
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 ->. この正規表現は、行の先頭と等号の前後に空白を含む行に一致するという点で、少し寛大です。以下の画像は、この正規表現の構成要素をより詳細に説明しています。

ps その画像は、優れた正規表現 IDE であるRegexBuddyによって生成されました。

ここに画像の説明を入力

于 2013-03-19T21:32:05.187 に答える
1

Autoit には、ini ファイルを処理する優れた方法があります - IniWrite

IniWrite("SysPrep.ini", "write_section_here", "ComputerName", $deviceNameInput)

以下を使用して SysPrep.ini を作成または更新します。

[write_section_here]
ComputerName=localhost
于 2013-03-21T16:04:06.417 に答える