String in xml Datei finden und die 7 Zeichen danach an Variable übergeben
Hallo zusammen! Ich habe ein Problemchen welches ich bisher leider nicht mit Hifle des Forums lösen konnte!
Also: ich habe die XML Datei "c:\temp\test.xml"
In dieser Datei möchte ich folgenden String finden: "</drive_name><slot>"
In Gänze steht in dieser Zeile: "</drive_name><slot>Slot: 8"
Wobei ich das "Slot: 8" an eine Variable zur Weiterverarbeitung übergeben möchte.
Habe schon diverse Lösungsansätze getestet....ohne Erfolg!
Ich steh wirklich auf dem Schlauch!
Kann mir jemand helfen?
Gruß Flash
In dieser Datei möchte ich folgenden String finden: "</drive_name><slot>"
In Gänze steht in dieser Zeile: "</drive_name><slot>Slot: 8"
Wobei ich das "Slot: 8" an eine Variable zur Weiterverarbeitung übergeben möchte.
Habe schon diverse Lösungsansätze getestet....ohne Erfolg!
Ich steh wirklich auf dem Schlauch!
Kann mir jemand helfen?
Gruß Flash
Please also mark the comments that contributed to the solution of the article
Content-Key: 130918
Url: https://administrator.de/contentid/130918
Printed on: April 24, 2024 at 11:04 o'clock
14 Comments
Latest comment
Hallo flash-gordon!
Der folgende Batch sollte auch für mehrere entsprechende Einträge die gewünschten 7 Zeichen (es wird vorausgesetzt, dass diese tatsächlich vorhanden sind) zurück- (bzw aus-) geben:
Je nach tatsächlicher Anzahl der "Slot:"-Einträge bzw gewünschter Weiterverarbeitung könnte Zeile 10 zB so umformuliert werden:
Grüße
bastla
Der folgende Batch sollte auch für mehrere entsprechende Einträge die gewünschten 7 Zeichen (es wird vorausgesetzt, dass diese tatsächlich vorhanden sind) zurück- (bzw aus-) geben:
@echo off & setlocal
set "Datei=C:\Temp\test.xml"
set "Such=</drive_name><slot>"
set "ZAnzahl=7"
set GT=%temp%\GetText.vbs
>%GT% echo Z=%ZAnzahl%:S="%Such%":L=Len(S):T=CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll
>>%GT% echo P=1:F=InStr(P,T,"%Such%"):Do While F^>0:P=F+L:WScript.Echo Mid(T,P,Z):F=InStr(P,T,"%Such%"):Loop
for /f "delims=" %%i in ('cscript //nologo %GT% "%Datei%"') do echo %%i
for /f "delims=" %%i in ('cscript //nologo %GT% "%Datei%"') do set "Slot=%%i"
bastla
Hallo flash-gordon!
Dass die Ausgabe unter Anführungszeichen erfolgen würde, kann ich mir überhaupt nicht vorstellen ...
Kannst Du ein Beispiel Deiner "xml"-Datei und den konkret verwendeten Script-Code posten (jeweils als formatiert)?
[Edit] Sollte für die "xml"-Datei Unicode verwendet werden, müsste die Zeile 7 geändert werden:
[/Edit]
Grüße
bastla
Dass die Ausgabe unter Anführungszeichen erfolgen würde, kann ich mir überhaupt nicht vorstellen ...
Kannst Du ein Beispiel Deiner "xml"-Datei und den konkret verwendeten Script-Code posten (jeweils als formatiert)?
[Edit] Sollte für die "xml"-Datei Unicode verwendet werden, müsste die Zeile 7 geändert werden:
>%GT% echo Z=%ZAnzahl%:S="%Such%":L=Len(S):T=CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0),1,True).ReadAll
Grüße
bastla
Hallo flash-gordon!
Beim Test mit Deinen beiden geposteten Dateien erhalte ich als Ergebnis wie gewünscht
Könnte es sein, dass die "xml"-Datei ev tatsächlich nicht im ASCII- bzw ANSI-Format vorliegt? In diesem Fall siehe mein "[Edit]" oben ...
Grüße
bastla
P.S.: Die Zeile
ist nicht erforderlich, da das VBScript ohnehin bei jedem Durchlauf neu erstellt wird (siehe Zeile 11 mit einem einzelnen ">") - selbst wenn Dein
Beim Test mit Deinen beiden geposteten Dateien erhalte ich als Ergebnis wie gewünscht
"Slot: 8"
Grüße
bastla
P.S.: Die Zeile
del C:\Temp\GetText.vbs
%temp%
-Pfad tatsächlich auf "C:\Temp
" zeigen sollte ...