Tengo una variable PATH del sistema con la configuración del nivel del sistema. Utilizo la variable PATH del usuario para complementar el PATH con la configuración específica del usuario.
Me gustaría actualizar la variable PATH del usuario desde la línea de comandos, por ejemplo, con setx.
Pero no sé cómo hacer referencia a la ruta de usuario existente en setx.
En el siguiente comando (setx sin / M)
setx PATH c:\my-user-specifc-bin-path;%PATH%
la primera RUTA significa RUTA del usuario, pero la segunda RUTA% será sustituida por la RUTA "completa" (usuario + sistema).
Por lo tanto, significa que toda la ruta del sistema se duplicaría en la RUTA del usuario ... lo que definitivamente no es lo que quiero.
Me gustaría:
- Afecta solo a la variable de entorno PATH del usuario
- Anexar / anteponer uno o más elementos de ruta al valor existente
- Hazlo desde la línea de comandos.
windows
command-line
path
environment-variables
Christian Lemer
fuente
fuente
;%PATH%
, estás pidiendo que se agregue la ruta existente (derivada de la ruta del sistema).Respuestas:
Versión de PowerShell, establezca RUTA para el usuario:
fuente
Para establecer la RUTA del usuario sobrescribiendo cualquier valor anterior:
Para anteponer un valor "C: \ MyPath0" a la RUTA de usuario existente:
Para agregar un valor "C: \ MyPath2" a la RUTA de usuario existente:
La condición if-else es necesaria porque la RUTA del usuario puede contener o no espacios. Si lo desea, puede guardar los comandos como archivos por lotes genéricos (asegúrese de duplicar cada signo%) que acepten el valor que se establecerá / agregará / agregará como argumento.
Archivo por lotes
fuente
for /?
te dirá todo lo que necesitas saber. :) No quería replicarlo todo aquí innecesariamente y pensé que la información sería fácil de entender de todos modos.PATH
ya termina con un punto y coma, en cuyo caso el anexo del directorio pasado debe hacerse sin un punto y coma adicional. Pero el mayor problema con este código es la corrupción del usuarioPATH
si la cadena tiene más de 1024 caracteres debido a que la cadena sesetx
trunca a 1024 caracteres y muestra una información adecuada antes de agregarla al registro de Windows. Por lo tanto, podría suceder que en lugar de agregar un directorio pasado, el usuario existentePATH
sea truncado (confuso) por este código.necesidad
SETX /M
, predeterminadoSETX
establecido enHKEY_CURRENT_USER
fuente
Esto parece funcionar:
fuente
PATH
usando localPATH
. Esta línea de comando realmente corrompe al usuarioPATH
al agregar al registro de Windows para el usuarioPATH
la cadenac:\my-user-specifc-bin-path-which-may-contain-spaces;%C:\Windows\System32;C:\Windows;C:\Windows\System32\wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;%
en el mejor de los casos. Todos los que usan esta línea de comando han corrompido con éxito la configuración del usuarioPATH
y son tan localesPATH
como lo utilizan todos los procesos que se ejecutan con la cuenta de usuario actual después del reinicio de Windows o el cierre de sesión / inicio de sesión.