roxx123
Goto Top

Batch Variable an ein XML-Dokument weitergeben und diese dort eintragen.

Guten Tag,

ich bin neu in dem Bereich der Batch Programmierung und habe mir einige Beiträge in diesem Forum angesehen die in die Richtung meines Problems gehen, allerdings leider nicht ganz das treffen was ich suche.
Und zwar soll in einem Batch Script eine Variable abgefragt werden und anschließend in einem XML Formular in eine bestimmte Zeile gesetzt werden.
Ich habe mir mal einige Batch Scripte hier zum Vorbild genommen und versucht ein bisschen zu basteln, leider verstehe ich noch nicht wirklich viel.
Die Zeile sieht vor der Abfrage so aus <Key Value= /> und soll nach der Abfrage dann in etwa so aussehen <Key Value="123" /> bei einer eingabe von 123 als Variable Key.

set /p key=
@echo on & Setlocal 
:: Defintition 
set Datei=C:\lulu.xml
set Neudatei=C:\lala.xml
set "NeueZeile=<Key Value="%key%" />"   

:: Jede Zeile der Datei auslesen und an u_Prog. übergeben 
for /f "delims=" %%i in (%Datei%) do set "Zeile=%%i" & call :processline   

:: Originaldatei wieder herstellen 
move %Neudatei% %Datei% 
pause
goto :eof 

:processline 
::Sonderzeichen maskieren 
set "Zeile=%Zeile:<=<Key"   
set "Zeile=%Zeile:>=/>"   
:: Nach String suchen 
echo "%Zeile%"|find "false">nul && (>>%Neudatei% echo %NeueZeile%) || (>>%Neudatei% echo %Zeile%)   
pause
goto :eof

Content-Key: 168776

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

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

Member: TsukiSan
TsukiSan Jun 28, 2011 at 16:33:23 (UTC)
Goto Top
ich hätte etwas in VBS für dich:
Ein = "C:\lulu.xml "  
Aus = "C:\lala.xml"  

Frage = Inputbox("Bitte KEY eingeben!",,"123")  

Von = "<Key Value= />"  
Nach = "<Key Value=" & chr(34) & Frage & chr(34) & " />"  

Set fso = CreateObject("Scripting.FileSystemObject")  
fso.CreateTextFile(Aus).Write Replace(fso.OpenTextFile(Ein).ReadAll, Von, Nach)

Vielleicht am Thema vorbeigeantwortet, aber eventuell hilft es dir.

Gruss
Tsuki
Member: Roxx123
Roxx123 Jun 29, 2011 at 07:16:08 (UTC)
Goto Top
Hallo Tsuki,

danke für die schnelle Antwort, leider muss es ein Batch-Script sein, und damit entspricht das nicht so ganz dem was ich brauche.

Gruss Roxx
Member: TsukiSan
TsukiSan Jun 29, 2011 at 08:54:33 (UTC)
Goto Top
Hi Roxx,

ich gebe ja nicht auf mit VBS (wegen etwaigier Leer- oder Sonderzeichen)
Wir können ja tricksen und erstellen und rufen eine VBS mittels Batch auf face-wink
@ECHO OFF &SETLOCAL

:: vbs erzeugen:
>"%temp%\XML.vbs" ECHO Ein = "C:\lulu.xml"  
>>"%temp%\XML.vbs" ECHO  Aus = "C:\lala.xml"  
>>"%temp%\XML.vbs" ECHO  Frage = "123" 'Inputbox("Bitte KEY eingeben!",,"123")  
>>"%temp%\XML.vbs" ECHO  Von = "<Key Value= />"  
>>"%temp%\XML.vbs" ECHO  Nach = "<Key Value=" & chr(34) & Frage & chr(34) & " />"  
>>"%temp%\XML.vbs" ECHO  Set fso = CreateObject("Scripting.FileSystemObject")  
>>"%temp%\XML.vbs" ECHO  fso.CreateTextFile(Aus).Write Replace(fso.OpenTextFile(Ein).ReadAll, Von, Nach)  

:: vbs aufrufen:
CALL "%temp%\XML.vbs"  

:: vbs löschen:
DEL "%temp%\XML.vbs"  
Damit kannst du bei Batch bleiben face-wink

Gruss
Tsuki
Member: Roxx123
Roxx123 Jun 29, 2011 at 09:18:15 (UTC)
Goto Top
Hi Tsuki,

mit dieser Lösung kann ich gut leben vielen dank dafür, jetzt hab noch ein Problem in Zeile 08 entdeckt wenn ich alles anpasse und dein Code ausführe sagt mir das System:
((Echo on), das ich sehe was passiert)

- Der Befehl chr ist entweder falsch geschrieben oder kann nicht gefunden werden
- Der Befehl Frage ist entweder falsch geschrieben oder kann nicht gefunden werden
- Der Befehl chr ist entweder falsch geschrieben oder kann nicht gefunden werden
- Der Befehl " />" ist entweder falsch geschrieben oder kann nicht gefunden werden

Könnte das auf die vielen "Anführungszeichen" zurückzuführen sein?
Member: TsukiSan
TsukiSan Jun 29, 2011 at 13:48:52 (UTC)
Goto Top
Hallo Roxx123,

joh, 'tschuldigung! Da pfeiff (pipe) ich mir Einen face-wink
Das Problem ist natürlich das & im Echo. Das muss - weil Befehlszeichen! - ausgepipet werden.
Schönes Deutsch face-wink
Mache es so:
@ECHO OFF & SetLocal EnableDelayedExpansion 

:: vbs erzeugen:
>%temp%\XML.vbs ECHO Ein = "C:\lulu.xml"  
>>%temp%\XML.vbs ECHO  Aus = "C:\lala.xml"  
>>%temp%\XML.vbs ECHO  Frage = "123"  
>>%temp%\XML.vbs ECHO  Von = "<Key Value= />"  
>>%temp%\XML.vbs ECHO  Nach = "<Key Value=" ^& chr(34) ^& Frage ^&  chr(34) ^&  " />"  
>>%temp%\XML.vbs ECHO  Set fso = CreateObject("Scripting.FileSystemObject")  
>>%temp%\XML.vbs ECHO  fso.CreateTextFile(Aus).Write Replace(fso.OpenTextFile(Ein).ReadAll, Von, Nach)


:: vbs aufrufen:
CALL %temp%\XML.vbs

:: vbs löschen:
DEL %temp%\XML.vbs

Gruss
Tsuki
Member: Roxx123
Roxx123 Jun 30, 2011 at 08:44:16 (UTC)
Goto Top
Guten Morgen Tsuki,

das war das was ich gebraucht habe vielen Dank für deine Hilfe.
Mal sehen ich glaube ich fange mal an nebenbei noch etwas VBS zu lernen. face-smile

Gruß Roxx
Member: TsukiSan
TsukiSan Jun 30, 2011 at 14:06:34 (UTC)
Goto Top
Hi Roxx,

es freut mich, dass es gepasst hat!
Batch und VBS haben für sich je Vorteile. Wenn du in VBS auch was machen möchtest, dann freue ich mich jetzt schon auf das nächste Thema! im positiven Sinne!

Gruss
Tsuki