Saltar al contenido

Los espacios y paréntesis en la variable PATH de Windows arruinan los archivos por lotes

Lucián, miembro de este equipo de trabajo, nos hizo el favor de crear este escrito porque domina a la perfección este tema.

Solución:

Nota para usuarios de Windows en sistemas de 64 bits

Progra~1 = ‘Archivos de programa’ Progra~2 = ‘Archivos de programa (x86)’

https://confluence.atlassian.com/display/DOC/Setting+the+JAVA_HOME+Variable+en+Windows

Esto puede suceder si hay paréntesis sin escape en una línea dentro de un “bloque” (que también usa paréntesis para delimitar).

Por lo general, puede solucionarlo activando la expansión retrasada y usando variables con !var! en vez de %var%. No hay muchos más consejos que pueda dar sin ver el código.

Debería haber (a) no ser comillas en la variable ambiental PATH de MS-Windows (comando PATH) o (b) debe haber comillas alrededor de la expresión completa después del (comando SET). Desafortunadamente, esto no está muy bien documentado por MS, aunque afirman que si se usan comillas, se incluirán en el valor de la variable (referencia de línea de comandos de Windows XP).

$ SET BLAH="blah blah(1)"
$ ECHO %BLAH%
"blah blah(1)"
$ SET BLAH=blah blah(1)
$ ECHO %BLAH%
blah blah(1)

Esto puede causar problemas que son inconsistentes y, por lo tanto, difíciles de diagnosticar. Por ejemplo, si su ruta incluye “C:Python27”, su máquina dirá “‘python’ no se reconoce como un comando interno o externo, programa operativo o archivo por lotes”. cuando intentas ejecutar python. Sin embargo, algunas bibliotecas mayo todavía estar disponible.

Tú haces no necesita “escapar” espacios o paréntesis. Si necesita escapar de los caracteres especiales, coloque comillas alrededor de toda la expresión, incluso el nombre de la variable.

SET "PATH=%PATH%;C:Program Files (x86)path with special characters"

o también puede usar paréntesis.

(SET VAR=can't contain ampersand, parentheses, pipe, gt or lt)

Tenga en cuenta que las comillas dobles deben ir en pares.

(SET VAR=illegal [email protected]#$%^*_-+=[]:;""',./?)
echo %VAR%
illegal [email protected]#$%*_-+=[]:;""',./?

Sin embargo, probablemente no haya caracteres que sean nombres de ruta válidos, lo que podría causar un problema con el comando SET.

Comentarios y calificaciones

Si posees algún inconveniente o disposición de enriquecer nuestro escrito puedes realizar una crítica y con placer lo analizaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *