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.PATHya 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 usuarioPATHsi la cadena tiene más de 1024 caracteres debido a que la cadena sesetxtrunca 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 existentePATHsea truncado (confuso) por este código.necesidad
SETX /M, predeterminadoSETXestablecido enHKEY_CURRENT_USERfuente
Esto parece funcionar:
fuente
PATHusando localPATH. Esta línea de comando realmente corrompe al usuarioPATHal agregar al registro de Windows para el usuarioPATHla 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 usuarioPATHy son tan localesPATHcomo 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.