Batch: suche nach usernameXYusername und ändere XY zu N
hi, kann ich einen Inhalt einer xml-datei per batch verändern?
User soll seinen Namen: N eingeben.
Dann soll in der xml-Datei nach <username>XY</username> gesucht werden. Alles was dazwischen steht, also in dem Fall das XY soll durch N ersetzt werden.
User soll seinen Namen: N eingeben.
Dann soll in der xml-Datei nach <username>XY</username> gesucht werden. Alles was dazwischen steht, also in dem Fall das XY soll durch N ersetzt werden.
Please also mark the comments that contributed to the solution of the article
Content-Key: 593357
Url: https://administrator.de/contentid/593357
Printed on: April 24, 2024 at 22:04 o'clock
4 Comments
Latest comment
![Mitglied: 145033 Mitglied: 145033](/images/members/profile_male_64x64.png)
Nimm die Powershell, Batch ist für sowas das schlechteste Mittel der Wahl.
$file = "d:\datei.xml"
$user = Read-Host "Username eingeben"
$xml = New-Object XML
$xml.Load($file)
$node = $xml.SelectSingleNode("//username")
if ($node){
$node.innerText = $user
$xml.Save($file)
}else{
Write-Error -Message "username Knoten nicht gefunden (Namespaces?)!"
}
![Mitglied: 145033 Mitglied: 145033](/images/members/profile_male_64x64.png)
Zitat von @o0Julia0o:
Danke sehr. Ich dachte erst Powershell ist schlecht, da dann die System angepasst werden müssten. Powershell ist nicht ausführbar "\Neues Textdokument.ps1" kann nicht geladen werden, da die Ausführung von Skripts auf diesem System deaktiviert ist. Weitere Informationen finden Sie unter "about_Execution_Policies" "
Sorry, ist BlödsinnDanke sehr. Ich dachte erst Powershell ist schlecht, da dann die System angepasst werden müssten. Powershell ist nicht ausführbar "\Neues Textdokument.ps1" kann nicht geladen werden, da die Ausführung von Skripts auf diesem System deaktiviert ist. Weitere Informationen finden Sie unter "about_Execution_Policies" "
https://www.heise.de/tipps-tricks/Windows-Powershell-Skript-ausfuehren-4 ...
Von daher bin ich auch batch angewiesen, dachte ich. Das funktioniert einwandfrei auf allen Systemen.
Nein.Jedoch kann man ein Powershellscript auch zu einer Exe umwandeln, und dann funktioniert das.
Nö auch ohne.Verstehen tue ich es aber nicht. Wo sagst du im Skript dass der nach <username> und vor </username> den neuen Namen einfügen soll? Im Skript steht:
("//username")
Aber das kommt ja nirgends in der xml-Datei vor!?
https://www.w3schools.com/xml/xpath_syntax.asp
Wenn der Knoten gefunden wurde dann wird dessen Inhalt mit der Variablen ersetzt, ganz einfach 😉. So macht man das halt bei XML Dateien, die sollte immer über Parser bearbeitet werden wie oben gezeigt, nicht mit irgendwelchem Batch "String-Gepansche"