Haz todo lo posible por comprender el código bien previamente a adaptarlo a tu proyecto si tdeseas aportar algo puedes comentarlo.
Solución:
Esto está usando la sustitución de variables de la línea de comandos. %path:;=&echo.%
medio “%path%
pero reemplaza todo ;
está con &echo.
“. Esto significa que, con set path=C:WindowsSystem32;C:Windows;;C:Python37;
:
echo %path:;=&echo.%
se convierte en:
echo C:WindowsSystem32&echo.C:Windows&echo.&echo.C:Python37&echo.
Ya que &
es un separador de comandos, esto es equivalente a:
echo C:WindowsSystem32
echo.C:Windows
echo.
echo.C:Python37
echo.
Debido a las peculiaridades de DOS Batch, echo.
es idéntico a echo
excepto cuando no hay nada después. Si ese es el caso, simplemente no imprime nada, en lugar de decirle si ECHO
está encendido o apagado. Esto hará que la salida:
C:Userswizzwizz4> echo %path:;&echo.%
C:WindowsSystem32
C:Windows
C:Python37
C:Userswizzwizz4>
Realmente, debería ser echo.%path:;=&echo.%
para dar cuenta del caso en que %PATH%
comienza con un ;
pero este comando es bastante inteligente de todos modos.
Entrando en detalles detallados, De Verdadecho(
debe usarse en lugar de echo.
. Esto es porque echo.
puede tener problemas cuando tienes un archivo llamado echo
y es lento porque tiene que revisar el disco (%CD%
y creo que también todos %PATH%
) cada vez que se ejecuta. (No tengo una copia de Windows, así que no puedo verificarlo yo mismo; ¿es solo %CD%
o en cualquier parte del %PATH%
que la presencia de la echo
archivo afectará echo.
y ¿qué hace?)
Esa es una solución interesante que nunca había visto antes. Déjame intentar explicar:
- Para imprimir la ruta completa, use
echo %path%
. Esto imprimirá todos los directorios en una sola línea separados por punto y coma (;
) - Para buscar/reemplazar un string en una variable, utilice
%path:a=b%
que reemplazará a todosa
personajes conb
echo.
se utiliza para imprimir una nueva línea&
se utiliza para separar comandos, por ejemploecho line1&echo line2
imprimirá dos líneas- En efecto, los puntos y comas en la ruta se reemplazan con un mando para imprimir una nueva línea. O tal vez se interprete como ‘reemplazar
;
sin nada, y luego, imprime una nueva línea’. No puedo encontrar ninguna documentación sobre esto, por lo que es solo mi interpretación. Francamente, ni siquiera sabía que eso era posible, pero ahí lo tienes. ACTUALIZAR Mi interpretación de este paso parece estar equivocada, y wizzwizz4 lo explica mejor.
Comentarios y puntuaciones del post
Acuérdate de que tienes la capacidad de valorar este post .