144 lines
4.2 KiB
XML
144 lines
4.2 KiB
XML
<?XML version="1.0" ?>
|
|
<package>
|
|
<comment>
|
|
<![CDATA[
|
|
VBSCRIPT parse the unattend.temp file to execute a
|
|
Perl-like regexp subst pattern
|
|
$line=~/\$\{(\w+)\}/$ENV{$1}/g
|
|
(see parsesys.pl on BVT machine)
|
|
]]>
|
|
</comment>
|
|
<job error="false" debug="false" logo="false">
|
|
<resource id="environment">PROCESS</resource>
|
|
<resource id="path">%BOOTTESTDRIVE%\TOOLS</resource>
|
|
<resource id="ifile">unattend.temp</resource>
|
|
<resource id="ofile">unattend.txt</resource>
|
|
<resource id="sample"><![CDATA[ProductID="${P_roductID}"]]></resource>
|
|
<resource id="pattern"><![CDATA[\$\{(\w+)\}]]></resource>
|
|
<script language="VBScript">
|
|
<![CDATA[
|
|
Option Explicit
|
|
|
|
|
|
'' One of three Tristate values used to indicate
|
|
'' the format of the opened file.
|
|
Const TristateFalse = 0 '' Opens the file as ASCII.
|
|
Const TristateTrue = - 1 '' Opens the file as Unicode.
|
|
Const TristateUseDefault = - 2 '' Opens the file using the system default.
|
|
|
|
Const QUOTE = """"
|
|
Const cDebug = False
|
|
|
|
Const ForReading = 1
|
|
Const ForWriting = 2
|
|
Const ForAppending = 8
|
|
|
|
|
|
Dim spSample, opRexpVa, opRexpUp, aspEnv, opReplace, spGenPat
|
|
Dim opShell, opFileSys, dpEnv, spText, spEnv
|
|
Dim spPath, spIName, spOName, siIName, siOName, siPath
|
|
Dim spExpdIPath, spExpdOPath, opStearm, opIFile, opOFile
|
|
|
|
Set opFileSys = CreateObject("Scripting.FilesystemObject")
|
|
Set opShell = WScript.CreateObject("WScript.Shell")
|
|
Set dpEnv = CreateObject("Scripting.Dictionary")
|
|
|
|
spPath = GetResource("path")
|
|
spIName = GetResource("ifile")
|
|
spOName = GetResource("ofile")
|
|
|
|
siPath = WScript.Arguments.Named("path")
|
|
siIName = WScript.Arguments.Named("in")
|
|
siOName = WScript.Arguments.Named("out")
|
|
|
|
If siPath <> "" Then
|
|
spPath = siPath
|
|
End If
|
|
If siIName <> "" Then
|
|
spIName = siIName
|
|
End If
|
|
If siOName <> "" Then
|
|
spOName = siOName
|
|
End If
|
|
|
|
|
|
|
|
For Each spEnv In opShell.Environment(CStr(GetResource("environment")))
|
|
aspEnv = Split(spEnv,"=")
|
|
If 1 = UBound(aspEnv) Then
|
|
dpEnv.add UCase(aspEnv(0)), aspEnv(1)
|
|
End If
|
|
Next
|
|
|
|
spGenPat = CStr(GetResource("pattern"))
|
|
|
|
spExpdIPath = opShell.ExpandEnvironmentStrings(_
|
|
spPath & "\" & spIName)
|
|
spExpdOPath = opShell.ExpandEnvironmentStrings(_
|
|
spPath & "\" & spOName)
|
|
|
|
|
|
spIName = opFileSys.GetFileName(opFileSys.GetAbsolutePathName(spExpdIPath))
|
|
spOName = opFileSys.GetFileName(opFileSys.GetAbsolutePathName(spExpdOPath))
|
|
|
|
Set opIFile = opFileSys.GetFile(spExpdIPath)
|
|
Set opOFile = opFileSys.CreateTextFile(spExpdOPath, True)
|
|
|
|
set opStearm = opIFile.OpenAsTextStream(ForReading, TristateUseDefault)
|
|
|
|
Do while opStearm.AtEndOfStream <> true
|
|
|
|
|
|
spSample = opStearm.ReadLine
|
|
|
|
Set opRexpVa = New RegExp
|
|
With opRexpVa
|
|
.Pattern = spGenPat
|
|
.Global = True
|
|
.IgnoreCase = True
|
|
.MultiLine = True
|
|
End With
|
|
|
|
|
|
Do While True = opRexpVa.Test(spSample)
|
|
|
|
Set opRexpUp = New RegExp
|
|
With opRexpUp
|
|
.Global = True
|
|
.IgnoreCase = True
|
|
.Pattern = spGenPat
|
|
End with
|
|
|
|
For Each opReplace in opRexpVa.Execute(spSample)
|
|
spEnv = opRexpUp.Replace(opReplace.Value, "$1")
|
|
opRexpUp.Pattern = Replace(spGenPat, "(\w+)", spEnv)
|
|
If cDebug Then
|
|
WSCript.echo "opRexpVa.Pattern=", QUOTE & opRexpVa.Pattern & QUOTE
|
|
WScript.echo "opRexpUp.Pattern=", opRexpUp.Pattern
|
|
WScript.echo "spSample=", spSample
|
|
End if
|
|
spSample = opRexpUp.Replace(spSample, dpEnv(UCase(spEnv)))
|
|
|
|
If cDebug Then
|
|
WScript.echo "spSample=", spSample & VBNEWLINE
|
|
End If
|
|
Next
|
|
|
|
|
|
Set opRexpUp = Nothing
|
|
|
|
Loop
|
|
|
|
Set opRexpVa = Nothing
|
|
|
|
opOFile.Write spSample & VBNEWLINE
|
|
|
|
Loop
|
|
Set opFileSys = Nothing
|
|
set opshell = Nothing
|
|
Set dpEnv = Nothing
|
|
|
|
]]>
|
|
</script>
|
|
</job>
|
|
</package> |