der-blob
Goto Top

SetX und Benutzervariablen entfernen?!

Hallo zusammen,
ich habe 2 kleine Fragen...

Frage 1: ist es möglich per batch BENUTZERvariablen zu ENTFERNEN? (setx variable "") macht diese ja nur "leer" aber entfernt sie nicht. - wenn ja: kann mir jemand sagen wie? face-smile

Frage 2:
ich habe folgendes kleines scriptchen...

::@echo off
set /p lic="blahhhhhh"  
set /p lan="Bitte Sprache angeben (german|english): "  
if "%lan%"=="english" (  
set lan1=Englisch
) else (
if "%lan%"=="german" (  
set lan1=Deutsch
) else (
goto err1
)
)

echo blahhhhh: %lic%
echo Die Sprache ist: %lan1%

setx sprach %lan%
setx irgendwas 52%lic%
pause
exit

:err1
echo ERROR
echo Sprache ist nicht english oder german.
echo ERROR
pause

Wenn ich nun eine shell aufmache, und in dieser Shell das Script ausführe, funktioniert alles wie es soll. Wenn ich jedoch das Script per Doppelklick ausführe, und halt german oder english eingebe (also nicht auf error läuft) ist es sozusagen in einer "endlos" schleife. Wenn ich jedoch auf error laufe funktioniert es Tadellos.

Jemand ne ahnung wie ich dieses script per doppelklick "ordentlich" ausführen kann?

Content-ID: 174096

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

Ausgedruckt am: 22.11.2024 um 18:11 Uhr

60730
60730 04.10.2011 um 11:32:14 Uhr
Goto Top
moin,

ich habe ein paar Gegenfragen....
Frage 1: ist es möglich per batch BENUTZERvariablen zu ENTFERNEN? (setx variable "") macht diese ja nur "leer" aber entfernt sie nicht. - wenn ja: kann mir jemand sagen wie? face-smile

  • nunja - eigentlich ist eine leere Variable immer auch eine gelöschte und im Zweifel kannst du Benutzervariablen immer löschen, wenn du die im Kontext des Benutzers ausführst.
  • dann verstehe ich nicht, warum der User "english" ein/vertippen soll und du dann eh Englisch draus zimmerst - ein e oder d wäre doch einfacher...
  • leider haben die Codetags hier immer eine Nebenwirkung - hinter jeder Zeile ist ein Leerzeichen - von daher und weil der gelernte Bätchelohr es eh so haben will...
set "lan1"=="Englisch"
denn set test= (also leerzeichen), löscht tatsächlich nicht die Variable, sondern gibt Ihr den Wert "Leehrzeichen"

  • dein GewirrSpagehtticode von Zeile 5-12....
if not "%lan%"=="english" if not "%lan%"=="german" goto err  

Dort hast du die "" ja gesetzt, aber nicht überall

<Edit> - wtf ist %lan% und was soll%lan1%?
Bist du dir sicher, dass hier die Version steht, von der du deine Problematik geschildert hast?
</Edit>

Gruß
der-blob
der-blob 04.10.2011 um 11:47:17 Uhr
Goto Top
Hallo, erstmal Danke für das auflösen von mein gewirr... - es funktioniert zwar, aber sieht halt naja aus, aber soll auch nicht toll aussehen, ist nur eine "notlösung".

ich hätte vielleicht bisschen mehr dazu Schreiben sollen *schäm*

Ich weis mit set blah= hat man dann den tollen wert leer... jedoch bringt mir dies in diesem zusammenhang nichts.
Denn die Variablen welche ich definier, sind schon als Systemvariablen vorhanden, und sollen nur Temporär (wie gesagt notlösung) umgebogen werden und da mehrere Programme auf diese Variablen zugreifen. ist es am einfachsten (soweit ich weis) einfach Benutzervariablen zu definieren, da diese ja "aussagekräftiger" sind. Und die Systemvariablen mit ;.... zu erweitern ist Theoretisch möglich, jedoch fehlen den Usern dazu die Rechte. Und am ende der Woche sollen diese einfach wieder gelöscht werden, per Schedule Task, oder 2. Script ist ja am ende egal.

Und das mit den aus english -->Englisch ist nur damit man "Englisch" lesen kann.. im Prinzip ist es total egal ob man nun E, G bzw. D eintippt kann mir ja entsprechend meine Variablen raus"saugen".

Ich hoffe damit ist mein Problem besser nachzuvollziehen.

€:
zu den %lan% und %lan1%, wie gesagt das %lan1% ist nur für das echo da... kann man theoretisch(auch praktisch) Komplett rauswerfen... - denn verwendet wird ja das %lan% also, german oder english.


Gruß
bastla
bastla 04.10.2011 um 12:52:58 Uhr
Goto Top
Hallo der-blob!

Die Beantwortung der Frage 1 überlasse ich mal MS themselves:
You cannot use the setx command to remove values that have been added to the local or system environments. You can use set with a variable name and no value to remove a corresponding value from the local environment.
"User"-Variablen solltest Du mit
setx Var ""
aber loswerden (zumindest unter XP soeben erfolgreich getestet) ...
Zu 2. hat T-Mo ja schon einiges angemerkt - ich würde aber jedefalls dem "if" noch ein "/i" spendieren ...

Grüße
bastla
der-blob
der-blob 04.10.2011 um 13:51:17 Uhr
Goto Top
Hallo,
danke für die Antwort, jedoch das ich mit setx var "" die variable "loswerde" wusst ich schon, nur das bringt mich an der stelle nicht genau weiter (siehe bild). - deshalb fragte ich ob da jemand noch was anderes kennt face-smile


9cab5892a4497d4af768bed156aae5e6


- Irgendwie glaube ich immer mehr das ich mit entweder besch... Ausgedrückt habe oder es einfach keine - für mich in diesem fall - funktionierende Lösung gibt.

Denn ne "leere" BENUTZERvariable bringt mir ja auch nichts, wenn später wieder die SYSTEMvariable genutzt werden soll.. face-smile

Vielleicht kann mir ja doch jemand weiterhelfen, glaube es jedoch weniger. Werde heute Nachmittag Beitrag als gelöst makieren, mit der erkenntnis, das es nicht machbar ist face-smile

Danke für eure Unterstüzung, denn ich glaub wenn ihr da schon nich weiter wisst geht da wirklich nichts.
60730
60730 04.10.2011 um 14:16:28 Uhr
Goto Top
Moinsen,

Bilder sagen mehr als 1.000 Worte...

Vielleicht kann mir ja doch jemand weiterhelfen, glaube es jedoch weniger

Glauben, heisst nicht wissen und auch wenn deine Frage falsch einsortiert ist (Verschieben kannst du das übrigens selber - uns Biber ist heute bestimmt im Mondaymode) - Wenn du hier nach einer Batchlösung fragst, die keine Kaffe kochen soll, kriegst du auch ne funktionierende Antwort.

Wäe ja noch schöner, wenn ausgerechnet wir hier "sowas" nicht praktikantisch lösen könnten....

 reg delete HKCU\Environment /v qwe /f

@bastla - logisch ein Ieh (vom IF) kann alleine nicht stehen, das /i hatte ich einfach vorausgesetzt, aber gut, das deine Augen immer mit dabei sind face-wink

Gruß
der-blob
der-blob 04.10.2011 um 15:23:33 Uhr
Goto Top
Danke, ich dachte am anfang mit

...BENUTZERvariablen zu ENTFERNEN..

Hatte ich mich klar ausgedrückt. - War wohl nicht der fall :D -

Aber da so eine ähnliche Antwort wie von dir kam, dachte ich nen Bild wär angebracht..


Und das glauben != wissen ist, weiss ich sonst hätt ich geschrieben "es kann mir keiner weiterhelfen" :P

Vielen dank, nachdem ich den lieben Thread verschoben habe, kommt der grüne Haken zum einsatzface-smile


Gruß