Использование OpenTextFile для всех файлов * .xml - PullRequest
0 голосов
/ 17 марта 2019

Мне нужно добавить текст в конец любого файла XML, который обнаруживает меня в маршруте, но он не принимает значение = *.

Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\WMI")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Lenovo_BiosPasswordSettings", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)

Set FSO   = WScript.CreateObject ("Scripting.FileSystemObject")
Set Linea = CreateObject("Microsoft.XMLDOM")
Set Linea = FSO.OpenTextFile("c:\temp\gpresult\*.xml", ForAppending, False, -1)

For Each objItem In colItems
    If (objItem.PasswordState = 2) Then
        WScript.Echo "Contraseña desactivada"
        Linea.WriteLine ""
        Linea.WriteLine "<EUT>"
        Linea.WriteLine "    </PasswordBios>"
        Linea.WriteLine "        PasswordState="Contraseña activada""
        Linea.WriteLine "    </PasswordBios>"
        Linea.WriteLine "</EUT>"
    Else
        WScript.Echo "Contraseña desactivada"
        Linea.WriteLine ""
        Linea.WriteLine "<EUT>"
        Linea.WriteLine "    </PasswordBios>"
        Linea.WriteLine "        PasswordState="Contraseña desactivada""
        Linea.WriteLine "    </PasswordBios>"
        Linea.WriteLine "</EUT>"
    End If
    Linea.Close
    Err.Clear
    EscribeLog = 0
Next

1 Ответ

1 голос
/ 18 марта 2019

Метод OpenTextFile() не позволяет использовать подстановочные знаки.Для обработки нескольких файлов XML вам необходимо перечислить файлов, проверить их на соответствующее расширение, а затем обработать их как файлы XML, а не как обычные текстовые файлы.

Set fso = CreateObject("Scripting.FileSystemObject")
Set xml = CreateObject("Msxml2.DOMDocument.6.0")
xml.Async = False
For Each f In fso.GetFolder("c:\temp\gpresult").Files
    If LCase(fso.GetExtensionName(f)) = "xml" Then
        xml.Load f.Path
        For Each objItem In colItems
            'code for appending nodes goes here
        Next
    End If
Next

Кроме того, НЕ изменяйтеXML путем добавления текста в конце файла, поскольку XML не допускает наличие нескольких корневых узлов.

Допустимый XML:

<foo>
    <something>abc</something>
</foo>

Недопустимый XML:

<foo>
    <something>abc</something>
</foo>
<bar>
    <something>abc</something>
</bar>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...