restaurar - variable path windows 10
Agregar directorio a la variable de entorno PATH en Windows (16)
Estoy tratando de agregar C:/xampp/php
a la PATH
entorno PATH
mi sistema en Windows.
Ya lo he agregado utilizando el cuadro de diálogo Variables de entorno.
Pero cuando escribo en mi consola:
C:/>path
no muestra el nuevo directorio C:/xampp/php
:
PATH=D:/Program Files/Autodesk/Maya2008/bin;C:/Ruby192/bin;C:/WINDOWS/system32;C:/WINDOWS;
C:/WINDOWS/System32/Wbem;C:/PROGRA~1/DISKEE~2/DISKEE~1/;c:/Program Files/Microsoft SQL
Server/90/Tools/binn/;C:/Program Files/QuickTime/QTSystem/;D:/Program Files/TortoiseSVN/bin
;D:/Program Files/Bazaar;C:/Program Files/Android/android-sdk/tools;D:/Program Files/
Microsoft Visual Studio/Common/Tools/WinNT;D:/Program Files/Microsoft Visual Studio/Common
/MSDev98/Bin;D:/Program Files/Microsoft Visual Studio/Common/Tools;D:/Program Files/
Microsoft Visual Studio/VC98/bin
Tengo dos preguntas:
- ¿Por qué pasó esto? ¿Hay algo que hice mal?
- Además, ¿cómo agrego directorios a mi variable
PATH
usando la consola (y programáticamente, con un archivo por lotes)?
ADVERTENCIA: Esta solución puede ser destructiva para su RUTA y la estabilidad de su sistema. Como efecto secundario, fusionará el usuario y el sistema PATH, y truncará PATH a 1024 caracteres. El efecto de este comando es irreversible. Haga una copia de seguridad de PATH primero. Vea los comentarios para más información.
No copie y pegue ciegamente esto. Utilizar con precaución.
Puede agregar permanentemente una ruta a PATH
con el comando setx
:
setx /M path "%path%;C:/your/path/here/"
Elimine la marca /M
si desea establecer la ruta de PATH
del usuario en lugar de la PATH
sistema.
Notas:
- El comando
setx
solo está disponible en Windows 7 y versiones posteriores. - Debe ejecutar este comando desde un símbolo del sistema elevado.
Opción 1
Después de cambiar PATH
con la GUI, cierre y vuelva a abrir la ventana de la consola.
Esto funciona porque solo los programas iniciados después del cambio verán el nuevo PATH
.
opcion 2
Ejecute este comando en la ventana de comandos que ha abierto:
set PATH=%PATH%;C:/your/path/here/
Este comando agrega C:/your/path/here/
al PATH
actual.
Romperlo:
-
set
: un comando que cambia las variables de entorno de cmd solo para la sesión cmd actual ; Otros programas y el sistema no se ven afectados. -
PATH=
- Significa quePATH
es la variable de entorno que se cambiará temporalmente. -
%PATH%;C:/your/path/here/
- La parte%PATH%
expande al valor actual dePATH
, y luego se concatena con;C:/your/path/here/
. Esto se convierte en el nuevoPATH
.
SETX más seguro
Mucha atención a todos los comentarios sobre la respuesta SETX
inicial de @Nafscript .
-
SETX
por defecto actualizará su ruta de usuario . -
SETX ... /M
actualizará la ruta de su sistema . -
%PATH%
contiene la ruta del sistema con la ruta del usuario agregada
Advertencias
- Haga una copia de seguridad de su
PATH
-SETX
truncará su basura con más de 1024 caracteres - No llame a
SETX %PATH%;xxx
: agrega la ruta del sistema a la ruta del usuario - No llame a
SETX %PATH%;xxx /M
: agrega la ruta del usuario a la ruta del sistema - El uso excesivo de archivos por lotes puede causar ceguera 1
La página ss64 SETX tiene algunos ejemplos muy buenos. Es importante señalar que las claves del registro son para SETX
vs SETX /M
Variables de usuario:
HKCU/Environment
Variables del sistema:
HKLM/SYSTEM/CurrentControlSet/Control/Session Manager/Environment
Instrucciones de uso
Anexar al usuario PATH
append_user_path.cmd
@ECHO OFF
REM usage: append_user_path "path"
SET Key="HKCU/Environment"
FOR /F "usebackq tokens=2*" %%A IN (`REG QUERY %Key% /v PATH`) DO Set CurrPath=%%B
ECHO %CurrPath% > user_path_bak.txt
SETX PATH "%CurrPath%";%1
Anexar al sistema PATH
append_system_path.cmd
. Debe ejecutarse como administrador.
(es básicamente lo mismo, excepto con una Key
diferente y el modificador SETX /M
)
@ECHO OFF
REM usage: append_system_path "path"
SET Key="HKLM/SYSTEM/CurrentControlSet/Control/Session Manager/Environment"
FOR /F "usebackq tokens=2*" %%A IN (`REG QUERY %Key% /v PATH`) DO Set CurrPath=%%B
ECHO %CurrPath% > system_path_bak.txt
SETX PATH "%CurrPath%";%1 /M
Alternativas
Finalmente, potencialmente hay una versión mejorada llamada SETENV recomendada por la página SETX de ss64 que se divide configurando las variables de entorno del usuario o del sistema.
1. No es estrictamente cierto
- He instalado PHP esa vez. Php-7 extraído . Zip en C: / php /
Haga una copia de seguridad de mi variable de entorno PATH actual: ejecute
cmd
y ejecute el comando:path >C:/path-backup.txt
Obtener el valor de mi ruta actual en el archivo C: / path.txt (de la misma manera)
- Modificar path.txt (claro, la longitud de mi ruta es más de 1024 caracteres, las ventanas se ejecutan pocos años)
- He eliminado rutas duplicadas allí, como ''C: / Windows; o C: / Windows / System32; o C: / Windows / System32 / Wbem; - Tengo dos veces.
- Quitar las rutas de programas desinstalados también. Ejemplo: C: / Archivos de programa / NonExistSoftware;
- De esta manera, la longitud de la cadena de mi ruta <1024 :)))
- al final de la cadena de ruta agregue; C: / php /
- Copie el valor de ruta solo en el búfer con comillas dobles enmarcadas! Ejemplo: "C: / Windows; ****; C: / php /" No PATH = debería estar allí !!!
- Abra Windows PowerShell como administrador.
- Ejecutar comando:
setx path "Here you should insert string from buffer (new path value)"
- Vuelva a ejecutar su terminal (yo uso "Far Manager") y verifique:
php -v
¿Qué pasa si escribes mal la ruta usando setx? La mejor manera es simplemente a través de las ventanas UI Panel de control-> Todos los elementos del Panel de control-> Sistema-> Configuración avanzada del sistema-> Variables de entorno
Desplázate hasta Ruta y selecciona Editar. También puedes copiarlo y pegarlo en tu editor favorito para que puedas ver la ruta completa y editarla más fácilmente.
Al revisar las sugerencias anteriores en Windows 10 LTSB y vislumbrar los esquemas de "ayuda" (que se pueden ver al escribir ''comando /?'' En el cmd), llegué a la conclusión de que el comando PATH cambia la variable de entorno del sistema Valores de ruta solo para la sesión actual, pero después de reiniciar, todos los valores se restablecen a su valor predeterminado, tal como estaban antes de usar el comando PATH.
Por otro lado, usar el comando SETX con privilegios administrativos es mucho más poderoso, cambia esos valores para siempre (o al menos hasta la próxima vez que se use este comando o hasta la próxima vez que esos valores se manipulen manualmente en la GUI ...).
Pero en aras de la claridad, pensé que compartir aquí el mejor uso de sintaxis SETX que funcionó para mí podría ayudar a alguien algún día:
SETX PATH "%PATH%;C:/path/to/where/the/command/resides"
donde se debe evitar cualquier signo igual ''='', ¡y no te preocupes por los espacios! no es necesario insertar más comillas para una ruta que contenga espacios dentro de ella, el signo de división '';'' Hacer el trabajo.
La palabra clave PATH que sigue a SETX define qué conjunto de valores deben cambiarse entre los valores posibles de las Variables del entorno del sistema, y el% PATH% (la palabra PATH rodeado por el signo de porcentaje) dentro de las comillas, indica al sistema operativo que deje el Los valores de PATH tal como son y agregan la siguiente ruta (la que sigue al signo de división '';'') a los valores existentes.
HTH
Aparte de todas las respuestas, si desea una buena herramienta de GUI para editar las variables de entorno de Windows, puede usar el Editor de Rapid Environment
¡intentalo! Es seguro de usar y asombroso!
En esta era de PowerShell, editaría PATH así:
$PATH = [Environment]::GetEnvironmentVariable("PATH")
$xampp_path = "C:/xampp/php"
[Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path")
Para establecer la variable para todos los usuarios, en toda la máquina, la última línea debe ser como:
[Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path", "Machine")
En una secuencia de comandos de PowerShell, es posible que desee comprobar la presencia de su C:/xampp/php
antes de agregarla a PATH (en caso de que se haya agregado anteriormente). Puedes envolverlo en un condicional if
.
Así que poniéndolo todo junto:
$PATH = [Environment]::GetEnvironmentVariable("PATH")
$xampp_path = "C:/xampp/php"
if( $PATH -notlike "*"+$xampp_path+"*" ){
[Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path", "Machine")
}
En un indicador de comando, le dice a Cmd que use la línea de comando del Explorador precediéndolo con start
.
Así que start Yourbatchname
.
Tenga en cuenta que debe registrarse como si su nombre fuera batchfile.exe
.
Los programas y los documentos se pueden agregar al registro, por lo que escribir su nombre sin su ruta en el cuadro de diálogo Inicio - Ejecutar o el acceso directo permite a Windows encontrarlos.
Este es un archivo de registro genérico. Copie las líneas a continuación en un nuevo documento de texto y guárdelo como anyname.reg. Edítalo con tus programas o documentos.
En las rutas, utilice / para separar los nombres de las carpetas en las rutas clave, ya que regedit usa una sola / para separar sus nombres clave. Todos los archivos reg comienzan con REGEDIT4. Un punto y coma convierte una línea en un comentario. El símbolo @ significa asignar el valor a la clave en lugar de a un valor con nombre.
El archivo no tiene que existir. Esto se puede utilizar para configurar Word.exe para abrir Winword.exe.
Si escribe start batchfile
se iniciará iexplore.exe.
REGEDIT4
;The bolded name below is the name of the document or program, <filename>.<file extension>
[HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/App Paths/Batchfile.exe]
;The @ means the path to the file is assigned to the default value for the key.
;The whole path in enclosed in a quotation mark ".
@="/"C://Program Files//Internet Explorer//iexplore.exe/""
;Optional Parameters. The semicolon means don''t process the line. Remove it if you want to put it in the registry
;Informs the shell that the program accepts URLs.
;"useURL"="1"
;Sets the path that a program will use as its'' default directory. This is commented out.
;"Path"="C://Program Files//Microsoft Office//Office//"
Ya te han dicho sobre el camino en otra respuesta. También vea doskey /?
para macros de cmd (solo funcionan al escribir).
Puede ejecutar comandos de inicio para CMD. Referencia técnica del Kit de recursos de Windows
AutoRun
HKCU/Software/Microsoft/Command Processor
Data type Range Default value
REG_SZ list of commands There is no default value for this entry.
Descripción
Contiene comandos que se ejecutan cada vez que inicie Cmd.exe.
Esto solo modifica el registro. Un proceso no utilizará estos valores hasta que se inicie después de este cambio y no herede el entorno de su padre.
No especificó cómo inició la sesión de la consola. La mejor manera de garantizar esto es cerrar sesión y volver a iniciar sesión.
Luego de la fiesta, pero útil si ya está en el directorio que desea agregar a PATH.
set PATH=%PATH%;%CD%
edición: según el comentario: funciona con ventanas estándar cmd pero no en powershell.
Para PowerShell, el %CD%
equivalente es [System.Environment]::CurrentDirectory
No necesita ningún comando set
o setx
, simplemente abra el terminal y escriba:
PATH
Esto muestra el valor actual de la variable PATH. ¿Ahora quieres agregarle un directorio? Simplemente escriba:
PATH %PATH%;C:/xampp/php
Si por alguna razón desea borrar la variable PATH (no hay rutas o eliminar todas las rutas), escriba:
PATH ;
Actualizar
Como señaló Danial Wilson en el comentario a continuación, establece el camino solo en la sesión actual. Para establecer la ruta de forma permanente, use setx
pero tenga en cuenta, aunque eso sí lo hace de manera permanente pero NO en la sesión actual, por lo que debe iniciar una nueva línea de comandos para ver los cambios, más información here .
Para verificar si existe una variable ambiental o ver su valor, use el comando ECHO commnad:
echo %YOUR_ENV_VARIABLE%
Respecto al punto 2 , estoy usando un archivo por lotes simple que está poblando PATH
u otras variables de entorno para mí. Por lo tanto, no hay contaminación de las variables ambientales por defecto. Se puede acceder a este archivo por lotes desde cualquier lugar, así que puedo escribir:
c:/>mybatchfile
-- here all env. are available
c:/>php file.php
Puede consultar más detalles sobre este enfoque simple here .
Si ejecuta el comando cmd
, actualizará todas las variables del sistema para esa ventana de comando.
Una mejor alternativa al Panel de control es usar este programa gratuito de sourceforge llamado Pathenator:
https://sourceforge.net/projects/pathenator/
Sin embargo, solo funciona para sistemas que tienen Dot.Net 4.0 o superior, como Windows 7,8 o 10.
- Los cambios en la línea de comando no serán permanentes, se perderán cuando la consola se cierre.
- El camino funciona como el primero que primero se sirve.
- Es posible que desee anular otros ejecutables ya incluidos. Por ejemplo, si ya tiene otra versión en su ruta y desea agregar una versión diferente sin hacer un cambio permanente en la ruta, debe poner el directorio al comienzo del comando.
Para anular los ejecutables ya incluidos;
establece PATH = C: / xampp / php;% PATH%;