Errorlevel liefert falsches Ergebnis zurück
Hallo,
ich habe wohl ein Brett vor dem kopf.... und verzweifle an einer Errorlevel Auswertung,
Wir haben auf einem Terminal Server ein Performance Problem, sobal Word (mit bestimmten Einstellungen) geht die Prozessorauslastung hoch.
Die Einstellungen sind in der Registry unter
Software\Microsoft\Office\9.0\Word\Options des jeweiligen Benutzers (%User_SID%)
Als Variable für den jeweiligen Value Name (AutoGrammar bzw. AutoSpell) habe ich %Value% definiert
Wenn ich nun folgenden Code ausführe
REG QUERY "HKey_Users\%User_SID%\Software\Microsoft\Office\9.0\Word\Options" /v %Value%> NUL 2>&1
IF %ERRORLEVEL% EQU 1 (
REG ADD "HKey_Users\%User_SID%\Software\Microsoft\Office\9.0\Word\Options" /V %Value% /T REG_DWORD /D 0 /F
IF %ERRORLEVEL% EQU 0 ECHO Registry value data : 0x0 added
IF %ERRORLEVEL% EQU 1 ECHO Registry value data : 0x0 not added. Caution!
)
so wird bei nicht Vorhandensein zwar der Value erzeugt (eigentlich Errorlevel 0), als Ausgabe bekomme ich jedoch immer Errorlevel 1. Warum, wieso, wo liegt mein Denkfehler?
Vielen Dank für Eure Hilfe
Fahrrad
ich habe wohl ein Brett vor dem kopf.... und verzweifle an einer Errorlevel Auswertung,
Wir haben auf einem Terminal Server ein Performance Problem, sobal Word (mit bestimmten Einstellungen) geht die Prozessorauslastung hoch.
Die Einstellungen sind in der Registry unter
Software\Microsoft\Office\9.0\Word\Options des jeweiligen Benutzers (%User_SID%)
Als Variable für den jeweiligen Value Name (AutoGrammar bzw. AutoSpell) habe ich %Value% definiert
Wenn ich nun folgenden Code ausführe
REG QUERY "HKey_Users\%User_SID%\Software\Microsoft\Office\9.0\Word\Options" /v %Value%> NUL 2>&1
IF %ERRORLEVEL% EQU 1 (
REG ADD "HKey_Users\%User_SID%\Software\Microsoft\Office\9.0\Word\Options" /V %Value% /T REG_DWORD /D 0 /F
IF %ERRORLEVEL% EQU 0 ECHO Registry value data : 0x0 added
IF %ERRORLEVEL% EQU 1 ECHO Registry value data : 0x0 not added. Caution!
)
so wird bei nicht Vorhandensein zwar der Value erzeugt (eigentlich Errorlevel 0), als Ausgabe bekomme ich jedoch immer Errorlevel 1. Warum, wieso, wo liegt mein Denkfehler?
Vielen Dank für Eure Hilfe
Fahrrad
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 165185
Url: https://administrator.de/contentid/165185
Ausgedruckt am: 23.11.2024 um 16:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo Fahrrad!
Stichwort: "delayedExpansion" ...
Vesuch es alternativ so:
Grüße
bastla
P.S.: Und wenn Dir hoffentlich die von mir verwendete Formatierung gefällt - das kannst Du auch (noch nachholen):
Stichwort: "delayedExpansion" ...
Vesuch es alternativ so:
IF %ERRORLEVEL% EQU 1 (
REG ADD "HKey_Users\%User_SID%\Software\Microsoft\Office\9.0\Word\Options" /V %Value% /T REG_DWORD /D 0 /F
IF ERRORLEVEL 1 (
ECHO Registry value data : 0x0 not added. Caution!
) ELSE (
ECHO Registry value data : 0x0 added
)
)
bastla
P.S.: Und wenn Dir hoffentlich die von mir verwendete Formatierung gefällt - das kannst Du auch (noch nachholen):
zu spät.
Hi,
aber dass man die Formatierung im Beitrag auch nachträglich anpassen kann, das ist doch in verständlichem Deutsch geschrieben, oder?
Zwischen den einzelnen Klammern kannst du mehrere Befehle einsetzen, da fehlt wohl hinter Zeile 4 oder 5 noch ein weiterer Befehl
Wozu benötigst du die Variable überhaupt? Du kannst doch gleich den korrekten Wert einsetzen.
Gruß
aber dass man die Formatierung im Beitrag auch nachträglich anpassen kann, das ist doch in verständlichem Deutsch geschrieben, oder?
Zwischen den einzelnen Klammern kannst du mehrere Befehle einsetzen, da fehlt wohl hinter Zeile 4 oder 5 noch ein weiterer Befehl
Wozu benötigst du die Variable überhaupt? Du kannst doch gleich den korrekten Wert einsetzen.
Gruß
Hallo Fahrrad!
und
oder auch
soweit klar ist, stellt sich mir nur noch die Frage, woran die korrekte Auswertung bei Dir scheitert - bei einem kurzen Test mit XP macht der oben von mir gepostete Schnipsel, was er soll ...
Grüße
bastla
mit dem Errorlevel habe ich ich, denke, ich schon verstanden ;o)
Wenn demnach der Unterschied zwischenif errorlevel 1
if %errorlevel% equ 1
if !errorlevel! equ 1
Grüße
bastla