Windows - batch script maskin miljø variabler

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et Windows-batch-script, der får PATH-miljøvariablen, kontrollerer, om den har en vis værdi i den, og sætter den derefter tilbage. For eksempel:


SET CURRPATH=\%PATH\%
:: do some stuff to check for a value in CURRPATH and add the value in if it is not in there
setx PATH \%PATH\%


Dette virker, men problemet er, at noget andet jeg installerede tidligere skabte en bruger systemmiljøvariabel, der hedder PATH. Når jeg får adgang til\% PATH\% -variablen i mit batch-script, slås det sammen både brugermiljøvariabel PATH og maskinens miljøvariabel PATH. Hver gang jeg kører scriptet bliver brugervariablen PATH tilføjet til maskinens miljøvariabel. Er der en måde at bare få adgang til maskinens miljøvariabel?


Selv om jeg bare kunne fjerne brugermiljøvariabelen PATH, er dette ikke en god generel løsning, da jeg ikke kan garantere, om de mennesker, der kører scriptet, vil have det samme problem.


Bemærk dette synes at være specifikt for PATH-variablen

Bedste reference


Der er mindst et andet problem med din tilgang: det vil udvide eventuelle miljøvariabler, der findes i PATH, hvilket kan være uønsket. Du kan også finde ud af, at setx lejlighedsvis hænger, jeg tror, ​​at dette skyldes andre applikationer, der ikke svarer som forventet, når det sender ændringen.


Den bedste løsning er sandsynligvis at opbygge en MSI-fil eller bruge en anden veludviklet installatorteknologi.


Det næstbedste ville være at skrive en ansøgning (en ægte applikation, ikke et batch script) til at manipulere registreringsdatabasen indstilling indeholdende miljøvariablen. Registernøglen, der indeholder maskinens miljøvariabler, findes her:


HKEY\_LOCAL\_MACHINESYSTEMCurrentControlSetControlSession ManagerEnvironment


Se også dette spørgsmål om SuperUser. Der er et svar der, der indeholder en batch-fil-baseret løsning, selvom det ikke fungerer pålideligt. [3]