kartoffelpelle
Goto Top

Mit Batch-Skript ein definiertes RecID-Feld in XML-Schema finden

Guten Tag,

ich bin neu hier und möchte um euren geschätzten Rat bitten. Ich habe hier bei Recherchen bereits häufig Hilfe gefunden und mich insbesondere aus diesem Grund in diesem Forum angemeldet. Auch wenn es zunächst nicht so wirken mag, habe ich bzgl. meines Problems bereits einige Stunden an Recherche und Tests investiert. Ich habe bereits einige gute Ansätze gefunden, allerdings ist mir der Durchbruch bisher leider noch nicht gelungen.

Aufgabenstellung:
Ich benötige ein Batch-Skript, welches in einer XML-Datei eine Zeile mit einem bestimmten Eintrag Tag findet. Dieses ist wie folgt aufgebaut:
<AaaVersion name="Graka AB" value="B017 " />  
Wenn ein entsprechendes Tag gefunden wurde, soll eine Programmupdate ausgeführt werden

Probleme:
- Ich kann auf den Systemen nicht auf Powershell oder andere nützliche Programme zurückgreifen
- ich schaffe es nicht, den String so zu maskieren/escapen, dass die Funktionen Find oder Findstr damit umgehen können
- es gibt einige ähnliche Elemente, daher ist es mir zu riskant nach einem Schnipsel aus dem String zu suchen

Folgenden Ansatz verfolge ich aktuell:
@echo on
SETLOCAL
set filedir=C:\Ordner\Unterordner
type %filedir%\Versions.xml | find "^<AaaVersion name=^"Graka AB^" value=^"B017 ^" /^>"  
echo %errorlevel%
pause

Ich bin für jede Hilfe sehr dankbar.

Viele Grüße
Kartoffelpelle

Content-ID: 421979

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

Ausgedruckt am: 22.11.2024 um 14:11 Uhr

rubberman
Lösung rubberman 25.02.2019 aktualisiert um 12:19:31 Uhr
Goto Top
type "%filedir%\Versions.xml" | find "<AaaVersion name=""Graka AB"" value=""B017 "" />"  
Anführungszeichen sind für FIND zu verdoppeln. Der Rest ist dann jeweils in einem Paar Anführungszeichen eingefasst und muss nicht weiter escaped werden.

Aber unabhängig davon - kannst du nicht wenigstens VBScript oder JScript einbinden um über das DOM auf die Daten zuzugreifen? Batch ist absolut ungeeignet für XML.


Steffen
Kartoffelpelle
Kartoffelpelle 25.02.2019 um 13:46:31 Uhr
Goto Top
Hallo Steffen,

vielen Dank, auch für die verständliche Erläuterung! Das hilft mir schon weiter.

Zu deiner Frage, bei den Zielsystemen handelt es sich um Rechner, die mit einer "Whitelisting"-Software hehärtet wurden. Diese Software verhindert die Ausführung aller Programme, die nicht explizit freigegeben wurden. Auf einige Standard-Funktionen können die Systeme nicht verzichten, u.A. "type", "find" oder "findstr". Powershell ist definitiv gesperrt (da zu mächtig...). Mit VBScript und JScript hatte ich bisher leider nur sehr wenig Umgang, daher sind entsprechende Skripte für mich auch eher kein Thema. Ich würde jedoch vermuten, dass die erforderlichen Programme nicht freigegeben sind. Bei Gelegenheit schaue ich aber mal face-smile .


Zitat von @rubberman:
Anführungszeichen sind für FIND zu verdoppeln. Der Rest ist dann jeweils in einem Paar Anführungszeichen eingefasst und muss nicht weiter escaped werden.

Auf die Gefahr hin, dass ich mich als vollkommen unfähig oute... Wo hätte ich die entsprechende Information selbst finden können, "find /?" oder "cmd /?" sind hier nicht hilfreich.

Viele Grüße
Kartoffelpelle
rubberman
Lösung rubberman 25.02.2019 um 18:01:32 Uhr
Goto Top
Auf die Gefahr hin
Nein, Microsoft hat das nicht vernünftig dokumentiert. Das ist nicht dein Fehler.
Natürlich findet man solche Informationen auf einschlägigen Seiten, z.B.
https://www.robvanderwoude.com/escapechars.php

Steffen