94233
Goto Top

Per batch überprüfen ob regestry eintrag vorhanden oder nicht!

hi leute ich habe folgendes Problem
ich hab hinbekommen mit einen einfach reg add befehl einen eintrag in einen bestimmten schlüssel zu erstellen
nun soll ich aber mit einem neuen batch überprüfen ob der eintrag vorhanden ist oder nicht.

So sieht meine bat datei aus:
@echo OFF
echo Es wird nun ueberprueft ob IRPStackSize schon erstellt ist...
echo Sollte Es nocht nicht erstellt sein koennen sie dies hier noch machen.
pause
set IRPStackSizeTest=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v IRPStackSize /d 50 /t REG_DWORD
for /F "delims=\ tokens=1" %%f in ('reg query "%IRPStackSizeTest%"') do (  
            set IRPSTackSizenr=%%f 
           CALL :Anzeigen
)

 
:Anzeigen
    reg query "%IRPStackSizeTest%\%IRPSTackSizenr%" /v Vorhanden | FIND "0b1">NUL  
    if "%errorlevel%"=="0" (  
            set vorhanden
            echo IRPStackSize ist bereits vorhanden!!!
        ) ELSE (
            set nicht vorhanden
	    echo IRPStackSize ist noch nicht vorhanden
            echo Die Erstellung von IRPStackSize wird gestartet.....
	    pause
	    reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v IRPStackSize /d 50 /t REG_DWORD
	    echo IRPStackSize wurde erfolgreich erstellt mit dem Wert 50!
	    echo Programm wird nun beendet
	    pause 
        )
 

exit

des weiteren bekomm ich eine fehler meldung wen ich ausführe u zwar:
Fehler: Der angegebene Registrierungsschlüssel oder Wert konnte nicht gefunden werden.
Fehler: Der angegebene Registrierungsschlüssel oder Wert konnte nicht gefunden werden.

Die Umgebungsvariable "nicht" ist nicht definiert.  
danach geht er in die schleife u zwar in den else zweig was ja richtig ist da er ja nichts gefunden hat
doch ich frag mich wiso er den schlüssel nicht annimmt und ich weis nicht wiso er sagt das ich den Umgebungsvariable "nicht" nicht definiert habe.
Ich benötige ja die Variable nicht oder?

Ich hoffe jemand kann mir auf die sprünge helfen bin noch recht neu in der Batch programmierung.

^^trotzdem schon mal vielen dank im voraus

Content-Key: 152378

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

Ausgedruckt am: 19.03.2024 um 09:03 Uhr

Mitglied: em-pie
em-pie 05.10.2010 um 12:02:47 Uhr
Goto Top
Moin,

hast du einfach mal nen
echo %IRPStackSize%
gemacht um zu sehen, was in deiner Variable überhaupt drin steht?
Mitglied: Dani
Dani 05.10.2010 um 12:16:37 Uhr
Goto Top
Moin,
set IRPStackSizeTest=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v IRPStackSize /d 50 /t REG_DWORD
Das ist schon mal Mist! Wenn du die Hilfe von "reg query /?" anschaust, wirst du feststellen, dass HKEY_LOCAL_MACHINE mit HKLM angekürtzt wird. Somit sollte Fehler 1,2 schon mal verschwunden sein.

Ansonsten ist der Aufbau der Batch für mich noch nicht ganz verständlich...
Update 12:28 Uhr

Ich habe mal was gebastelt:
@echo off

set value=
for /f "tokens=3 delims= " %%i in ('reg query HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v IRPStackSize /t REG_DWORD ^| findstr /i "REG_DWORD" ') do set value=%%i  

if "%value%" EQU "" (  
	echo IRPStackSize ist noch nicht vorhanden
	echo Die Erstellung von IRPStackSize wird gestartet...
	pause

	reg add HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v IRPStackSize /d 50 /t REG_DWORD

	echo IRPStackSize wurde erfolgreich erstellt mit dem Wert 50!
	echo Programm wird nun beendet.

	pause

) else (
	echo IRPStackSize ist bereits vorhanden!
	echo Wert: %value%
)
Diese kl. Batchdatei prüft ob der Registrykey "IRPStackSize" vorhanden ist oder nicht. Wenn er vorhanden ist, wird nichts gemacht anderen Falls wird der Key erstellt.
Erfüllt das deine Aufgabe oder habe ich was falsch gelesen?!


Grüße,
Dani
Mitglied: 94233
94233 05.10.2010 um 13:11:16 Uhr
Goto Top
hnnn danke das was du da gebastelst hast ist schon recht hilfreich
hab bloss die frage wen man das was du da geschrieben hast verwendet passiert nix
fehlt da noch irgend was?

also das Programm soll lediglich in den angegebenen pfad nach dem eintrag suchen u sagen ob er vorhanden ist oder nicht u wen nicht dann die erstellung einleiten
Mitglied: Dani
Dani 05.10.2010 um 13:27:51 Uhr
Goto Top
Ich habe es unter Windows 7 x64 Professional getestet.... da scheint es zu funktionieren.
Hast du meine Zeilen in eine Batchdatei kopiert, gespeichert und ausgeführt oder direkt in die Kommandozeile kopiert und ausgeführt?!


Grüße,
Dani
Mitglied: 94233
94233 05.10.2010 um 13:32:40 Uhr
Goto Top
ich habs in einen extra bat datei kopiert abgespeichert u ausprobiert
o.o hnnn ka ob es am bs liegt verwende hier of den rechner win xp home
Mitglied: Dani
Dani 05.10.2010 um 15:06:00 Uhr
Goto Top
Sorry, ich habe hier grad kein virtuelles WindowsXP zur Hand. Könnte jemand anders (z.B. Biber oder bastla) das Ganze bei sich testen.
Irrtiert mich grad schon ein bisschen....


Grüße,
Dani
Mitglied: 94233
94233 05.10.2010 um 15:22:14 Uhr
Goto Top
o.o ich hab nun ein anderes Problem seite dem ich dein batch programm ausprobiert hab spinnen meine ganzen bats o.o
so bald sie etwas tun sollen bleiben sie stecken und führen im hintergrund immer wieder die cmd.exe aus u das so lange bis ich das fenster schließe
beim schließen schreibt es dann C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^C^ je nach dem wie lange ich das fenster offen gelasen hab
auch wen ich ne neue bat schreibe passiert immer wieder das hab auch meinen rechner neu gestartet keine ahnung was mit dem los ist


-.- hab heraus gefunden woran es liegt u zwar war es die bat datei die mit deinen code gefüttert war
das hat sämtliche bat datein zum still stand gebracht
Mitglied: bastla
bastla 07.10.2010 um 00:21:20 Uhr
Goto Top
Hallo Dani!

Sorry für die Verspätung (war irgendwie zwischendurch auf der Strecke geblieben) ... face-sad

Die folgende Version gewinnt zwar sicher keinen Schönheitspreis, sollte aber funktionieren:
@echo off & setlocal

set "value="  
for /f "tokens=3" %%i in ('reg query HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v IRPStackSize 2^>nul ^| findstr /i "REG_DWORD" ') do set "value=%%i"  

if "%value%" EQU "" (  
    echo IRPStackSize ist noch nicht vorhanden
    echo Die Erstellung von IRPStackSize wird gestartet...
    pause

    reg add HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v IRPStackSize /d 50 /t REG_DWORD

    echo IRPStackSize wurde erfolgreich erstellt mit dem Wert 50!
    echo Programm wird nun beendet.

    pause

) else (
    echo IRPStackSize ist bereits vorhanden!
    echo Wert: %value%
)
Grüße
bastla