fahrrad
Goto Top

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

Content-Key: 165185

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

Ausgedruckt am: 28.03.2024 um 16:03 Uhr

Mitglied: bastla
bastla 26.04.2011 um 14:55:03 Uhr
Goto Top
Hallo Fahrrad!

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
    )
)
Grüße
bastla

P.S.: Und wenn Dir hoffentlich die von mir verwendete Formatierung gefällt - das kannst Du auch (noch nachholen): face-wink
Mitglied: 99045
99045 26.04.2011 um 14:58:43 Uhr
Goto Top
zu spät. face-smile
Mitglied: Fahrrad
Fahrrad 26.04.2011 um 15:59:10 Uhr
Goto Top
Hallo Bastla,

vielen Dank für Deine schnelle Antwort, allerdings hat sich am Fehlerverhalten bzw. der Ausgabe nichts geändert. Bei positiver Ausführung kommt immer noch

Value data 0x0 : not added.

P.S. natürlich sieht es viel schöner und übersichtlicher aus, allerdings habe ich das System dazu noch trotz Anleitung noch nicht verstanden ;o(
Mitglied: 99045
99045 26.04.2011 um 16:09:44 Uhr
Goto Top
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ß
Mitglied: bastla
bastla 26.04.2011 um 16:33:53 Uhr
Goto Top
Hallo Fahrrad!

Das "System" ist relativ einfach: Eine Abfrage mit
if errorlevel 1
prüft auf einen Errorlevel >=1 ...
BTW: Warum verwendest Du eigentlich "HKey_Users\%User_SID%" und nicht "HKEY_CURRENT_USER"?

Grüße
bastla
Mitglied: Fahrrad
Fahrrad 27.04.2011 um 07:20:04 Uhr
Goto Top
Guten Morgen,

mit dem System meinte ich die übersichtlichere Zeilennummerierung, mit dem Errorlevel habe ich ich, denke, ich schon verstanden ;o)

Ich versuche jedem Terminalserver Benutzer die Registry-Einstellungen vorzugeben, also schaue ich nach wer ist angemeldet, suche die zugehörige SID und schreibe dann dort die Einstellungen, bei Offline Usern mache ich ich es über reg load ntuser.dat, deswegen die Verwendung "HKey_Users\%User_SID%" anstelle von "HKEY_CURRENT_USER"?.

Ich verwende die Variable Value, weil ich AutoGrammar und AutoSpell erzeugen /ändern muß.

Ich könnte mehr oder weniger auf den Errorlevel verzichten, möchte aber rein der Übersichthalber mir ausgeben lassen, ob der Wert angelegt werden mußte, schon vorhanden ist oder der Wert geändert werden mußte.

VG
Fahrrad
Mitglied: bastla
bastla 27.04.2011 um 08:35:10 Uhr
Goto Top
Hallo Fahrrad!
mit dem Errorlevel habe ich ich, denke, ich schon verstanden ;o)
Wenn demnach der Unterschied zwischen
if errorlevel 1
und
if %errorlevel% equ 1
oder auch
if !errorlevel! equ 1
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
Mitglied: Fahrrad
Fahrrad 02.05.2011 um 12:22:31 Uhr
Goto Top
Hallo bastla,

tja, was soll ich sagen, der Fehler sitzt vor dem Monitor, hatte kein

IF Errorlevel 1

stehen, sondern noch

IF %ERRORLEVEL% EQU 1

dann aknn auch nicht mit dem nachbarn klappen....

Vielen Dank & vieel Grüße
Fahrrad