66687

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

geschlossengelöstFrageBatch, Shell Entwicklung
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
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 90711

Url: https://administrator.de/forum/erste-zeile-einer-text-datein-in-einem-bestimmten-bereich-einer-xml-datei-schreiben-90711.html

Ausgedruckt am: 26.06.2025 um 05:06 Uhr

bastla
bastla 26.06.2008 um 13:55:34 Uhr
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
66687
66687 26.06.2008 um 15:18:46 Uhr
Goto Top
danke schön, funktioniert super face-smile