_FileReadToArray, StringInStr & StringReplace

  • Hallo,

    möchte eine "vbs"-Datei in ein Array einlesen, anschließend zwei Werte suchen und diese dann durch Werte aus Variablen ersetzen und anschließend eine zweite "vbs"-Datei schreiben, um sie anschließend ausführen zu können.

    Hier der vbs-Code (zu ersetzendes rot markiert):
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set objNewJob = objWMIService.Get("Win32_ScheduledJob")
    errJobCreated = objNewJob.Create
    ("C:\BKU\Update\update.exe", "********013000.000000-420", True , 1, , , JobID)
    Wscript.Echo errJobCreated

    Aktuelles Problem:
    Der Array wird anscheinend eingelesen, die neue "vbs"-Datei erstellt, jedoch ohne Inhalt. Was mache ich hier falsch?

    Hier der AutoIT-Code:

    [autoit]

    $sPathVBS = 'C:\BKU\ToDo\base.vbs'
    $fhNewVBS = FileOpen('C:\BKU\Update\scheduled.vbs', 2)
    Dim $arTextVBS

    [/autoit][autoit][/autoit][autoit]

    If Not _FileReadToArray($sPathVBS, $arTextVBS) Then
    MsgBox(4112, 'Error', 'Datei konnte nicht eingelesen werden!', 5)
    Else
    For $i = 1 To $arTextVBS[0]
    Select
    Case StringInStr($arTextVBS[$i], '0130')
    StringReplace($arTextVBS[$i], '130', $zeit1, 1)
    Case StringInStr($arTextVBS[$i], 'True , 1')
    StringReplace($arTextVBS[$i], 'True', $tag, 1)
    EndSelect
    Next
    IF Not _FileWriteFromArray($fhNewVBS, $arTextVBS) Then
    MsgBox(4112, 'Error', 'Datei konnte nicht geschrieben werden!', 5)
    EndIf
    EndIf
    FileClose($fhNewVBS)

    [/autoit]
    • Offizieller Beitrag

    Mach es doch komplett mit AutoIt, dann ist es sicher einfacher.
    Ungetestet:

    [autoit]

    $str = "********013000.000000-420"
    $num = 1
    $strComputer = "."
    $objWMIService = ObjGet("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
    $objNewJob = $objWMIService.Get("Win32_ScheduledJob")
    $errJobCreated = $objNewJob.Create("C:\BKU\Update\update.exe", $str, True , $num, , , 'JobID')
    MsgBox(0, '', $errJobCreated)

    [/autoit]