66687
Goto Top

Erste Zeile einer Text Datein in einem bestimmten Bereich einer XML Datei schreiben

Hallo,

ich habe 2 Datein einmal solutionid.txt und setup.exe.config.

Der Inhalt der solutionid.txt:

d48f1f0f-2959-45ec-8b5d-0178ae7e35b2

(besteht nur aus einer Zeile, anzahl an Zeichen ist immer gleich),

soll in die setup.exe.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="BannerImage" value="Default"/>
<add key="LogoImage" value="None"/>
<add key="EULA" value="EULA.rtf"/>
<add key="Require" value="MOSS"/>
<add key="SolutionId" value="d48f1f0f-2959-45ec-8b5d-0178ae7e35b2"/>
<add key="FarmFeatureId" value="400D8B01-1F64-46b4-A1DD-A1DA6A0E8E94"/>
<add key="SolutionFile" value="GlobalMasterPage.wsp"/>
<add key="SolutionTitle" value="GlobalMasterPage"/>
<add key="SolutionVersion" value="1.0.0.0"/>
<add key="UpgradeDescription" value="Upgrades {SolutionTitle} on all frontend web servers in the SharePoint farm."/>
<add key="RequireDeploymentToCentralAdminWebApllication" value="false"/>
<add key="RequireDeploymentToAllContentWebApplications" value="false"/>
</appSettings>
</configuration>


den SolutionId Wert ersetzten.

Nachdem was ich so gelesen habe sollte das Möglich sein, mittels Batch. Aber ich bekomms nicht hin.

Hoffe ihr könnt mir da weiter helfen.

mfG,
max

Content-Key: 90711

Url: https://administrator.de/contentid/90711

Printed on: April 19, 2024 at 21:04 o'clock

Member: bastla
bastla Jun 26, 2008 at 11:55:34 (UTC)
Goto Top
Hallo MaxMustermann35 und willkommen im Forum!

Nachdem was ich so gelesen habe sollte das Möglich sein, mittels Batch.
Wo liest Du denn sowas?! face-wink

Tatsächlich ist es mit Batch alleine (schon wegen der Sonderzeichen "<" und ">") zumindest mühsam - daher verwendet der folgende Vorschlag für die eigentliche Ersetzung ein temporäres (durch den Batch erzeugtes) VBScript:
@echo off & setlocal
set "Cfg=D:\setup.exe.config"  
set /p Key=<"D:\solutionid.txt"  

set R=%temp%\ReplaceKey.vbs
echo S="SolutionId"" value=""":E="""/>":Set fso=CreateObject("Scripting.FileSystemObject")>%R%  
echo Set args=WScript.Arguments:T=fso.OpenTextFile(args(0)).ReadAll>>%R%
echo P=InStr(1,T,S,vbTextCompare):If P=0 Then WScript.Quit 1 >>%R%
echo fso.CreateTextFile(args(0),True).Write Left(T,P+Len(S)-1)^&args(1)^&Mid(T,InStr(P,T,E))>>%R%

cscript //nologo %R% "%Cfg%" "%Key%"  
if errorlevel 1 echo Keine Ersetzung vorgenommen!
Voraussetzung für das Ersetzen ist, dass es in der angegebenen Datei zumindest folgenden Bestandteil gibt:
SolutionId" value=""/>  
Ob zwischen den auf "value" folgenden Anführungszeichen bereits ein Wert steht oder nicht, ist unerheblich, da an diese Position der eingelesene Key geschrieben wird.

Soferne der Teil
SolutionId" value="  
nicht gefunden wird, endet das Script mit einem Errorlevel 1. Das anschließende
"/>  
wird nicht gesondert geprüft, sondern die Ersetzung betrifft alles bis zum nächsten Auftreten dieses Strings.

Die Änderung erfolgt unmittelbar in der Config-Datei, es wird keine Sicherungskopie erstellt.

Grüße
bastla
Mitglied: 66687
66687 Jun 26, 2008 at 13:18:46 (UTC)
Goto Top
danke schön, funktioniert super face-smile