Windows CMD - Reset path variabel fra batch fil?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en batchfil, der ændrer variablen PATH ved at forberede et par adresser. Når brugeren logger fra og derefter, nulstilles PATH til sin oprindelige værdi (før batchfilen nogensinde var løbe). Denne adfærd er OK.


Men hvis batchfilen køres mere end én gang, bliver de samme værdier genopført, og jeg ender med en alt for lang, overflødig PATH-variabel, der bare kommer længere efter hver batch-runde.


Jeg vil gerne nulstille variablen til det, det er, når brugeren logger på, før værdierne er opstillet. Jeg finder løsningen at skrive den oprindelige værdi i en tempfil og læse den tilbage, men er der en bedre måde at gør det?

Bedste reference


I stedet for at skrive den oprindelige værdi til en tempfil, kan du skrive den til en anden miljøvariabel:


if not defined ORIGINAL-PATH set ORIGINAL-PATH=\%PATH\%
set PATH=c:extrastuff;\%ORIGINAL-PATH\%


men det ville være bedre at eksplicit kontrollere, om den ønskede streng er i PATH allerede eller ej, sådan:


echo \%PATH\% | findstr /c:"c:extrastuff;" > nul || set PATH=c:extrastuff;\%PATH\%

Andre referencer 1


Sæt @SETLOCAL øverst i din batchfil.


Eventuelle ændringer i miljøet vil blive gendannet, når batchfilen udgår.


Kør setlocal /? for flere detaljer.

Andre referencer 2


Jeg har længe søgt en løsning på et lignende problem. Endelig endte jeg med at bruge den pathmgr.cmd, som jeg har downloadet fra:


http://gallery.technet.microsoft.com/Batch-Script-To-Manage-7d0ef21e [7]


For at bruge det til at rense brugeren PATH, kan nedenstående muligheder bruges fra kommandolinjen:



  pathmgr.cmd/clean/user/p/y



Mange andre nyttige muligheder er også tilgængelige.