Lizenschlüssel in einer XML-Datei suchen und bearbeiten
Hallo,
leider bin ich durch die Suchfunktion auf keine brauchbare Lösung gestossen.
Durch ein Softwareupdate dass wir demnächst durchführen werden muss der vorhandene Lizenzschlüssel in einer XML-Datei ausgelesen und bearbeitet werden.
Die Datei heisst z.B. "license.xml"
- in dieser befindet sich die Zeile: <item Name="License Access Code" Value="XXXXX-XXXXX-XXXXX-XXXXX-XXXXX" />
nun muss vor dem Softwareupdate der Lizenzschlüssel auf eine weitere Gruppe erweitert werden z.B. "12345": <item Name="License Access Code" Value="XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-12345" />
Ich hoffe, Ihr könnt mir bei meinem Problem weiterhelfen.
Vielen Dank schonmal im voraus!
LG
Atti
leider bin ich durch die Suchfunktion auf keine brauchbare Lösung gestossen.
Durch ein Softwareupdate dass wir demnächst durchführen werden muss der vorhandene Lizenzschlüssel in einer XML-Datei ausgelesen und bearbeitet werden.
Die Datei heisst z.B. "license.xml"
- in dieser befindet sich die Zeile: <item Name="License Access Code" Value="XXXXX-XXXXX-XXXXX-XXXXX-XXXXX" />
nun muss vor dem Softwareupdate der Lizenzschlüssel auf eine weitere Gruppe erweitert werden z.B. "12345": <item Name="License Access Code" Value="XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-12345" />
Ich hoffe, Ihr könnt mir bei meinem Problem weiterhelfen.
Vielen Dank schonmal im voraus!
LG
Atti
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 169564
Url: https://administrator.de/contentid/169564
Ausgedruckt am: 22.11.2024 um 18:11 Uhr
6 Kommentare
Neuester Kommentar
Hi !
Der Softwarehersteller bietet Dir kein Tool dafür an?
Das ist ja schon ganz schön unverschämt von einem Kunden zu verlangen, dass dessen Admin eine Batch schreiben muss, nur damit deren Lizenzgeraffel funktioniert! Manche Hersteller machen es sich schon arg leicht....Schon alleine für sowas gehört wieder der Pranger eingeführt....
mrtux
Der Softwarehersteller bietet Dir kein Tool dafür an?
Das ist ja schon ganz schön unverschämt von einem Kunden zu verlangen, dass dessen Admin eine Batch schreiben muss, nur damit deren Lizenzgeraffel funktioniert! Manche Hersteller machen es sich schon arg leicht....Schon alleine für sowas gehört wieder der Pranger eingeführt....
mrtux
Hallo Attituder,
teste mal folgendes:
Gruß
Friemler
teste mal folgendes:
@echo off & setlocal
set "LicFile=Test.xml"
set "NewLicFile=TestNeu.xml"
set "NewGroup=12345"
for /f "usebackq delims=" %%l in ("%LicFile%") do (
<NUL set /p "=%%l" | findstr /c:"License Access Code" > NUL && (
for /f "tokens=7 delims== " %%k in ("%%l") do (
set "Line=%%l"
set "Key=%%~k"
call :WriteNewLine
)
) || (
>>"%NewLicFile%" (<NUL set /p "=%%l" & echo.)
)
)
exit /b
:WriteNewLine
set "NewKey=%Key%-%NewGroup%"
call set "NewLine=%%Line:%Key%=%NewKey%%%"
>>"%NewLicFile%" (<NUL set /p "=%NewLine%" & echo.)
exit /b 0
Gruß
Friemler
Bei bekanntem Schlüssel:
Bei unkanntem Schlüssel:
Für Windows wird dafür http://www.cygwin.com benötigt.
sed -i license.xml -e "s/XXXXX-XXXXX-XXXXX-XXXXX-XXXXX/XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-12345/g"
Bei unkanntem Schlüssel:
export LIC=`grep "item Name=\"License Access Code\" Value=" | gawk -F "\"" ' { print $4 } ' `
sed -i license.xml -e "s/$LIC/$LIC-12345/g"
Für Windows wird dafür http://www.cygwin.com benötigt.
Hallo Attituder,
ich habe mir schon gedacht, dass noch eine Rückmeldung in der Art kommt, evtl. auch "Die Einrückungen in der XML-Datei gehen verloren!". Ich schiebe deshalb noch eine VBScript-Version hinterher, bei der dieser ganze Ärger wegfällt. Hätte ich mal direkt so machen sollen .
Bei der Erstellung des Regulären Ausdrucks in Zeile 16 bin ich davon ausgegangen, dass in dem Lizenzcode nur Buchstaben und Zahlen vorkommen.
Gruß
Friemler
ich habe mir schon gedacht, dass noch eine Rückmeldung in der Art kommt, evtl. auch "Die Einrückungen in der XML-Datei gehen verloren!". Ich schiebe deshalb noch eine VBScript-Version hinterher, bei der dieser ganze Ärger wegfällt. Hätte ich mal direkt so machen sollen .
strLicFile = "Test.xml"
strNewLicFile = "TestNeu.xml"
strNewGroup = "12345"
Const ForReading = 1
Const ForWriting = 2
Const AsASCII = 0
Set objFSO = CreateObject("Scripting.FileSystemObject")
arrContent = Split(objFSO.OpenTextFile(strLicFile, ForReading, False, AsASCII).ReadAll, vbCRLF)
Set objOutFile = objFSO.OpenTextFile(strNewLicFile, ForWriting, True, AsASCII)
Set objRegExp = New RegExp
objRegExp.Pattern = "[A-Z0-9]{5}-[A-Z0-9]{5}-[A-Z0-9]{5}-[A-Z0-9]{5}-[A-Z0-9]{5}"
objRegExp.IgnoreCase = True
For Each strLine In arrContent
If InStr(strLine, "License Access Code") > 0 Then
strLine = objRegExp.Replace(strLine, objRegExp.Execute(strLine)(0).Value & "-" & strNewGroup)
End If
objOutFile.WriteLine strLine
Next
objOutFile.Close
Bei der Erstellung des Regulären Ausdrucks in Zeile 16 bin ich davon ausgegangen, dass in dem Lizenzcode nur Buchstaben und Zahlen vorkommen.
Gruß
Friemler