Saltar al contenido

Cómo funciona este comando de Windows: echo %path:;=&echo.%

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 echoexcepto 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 echoy 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:

  1. Para imprimir la ruta completa, use echo %path%. Esto imprimirá todos los directorios en una sola línea separados por punto y coma (;)
  2. Para buscar/reemplazar un string en una variable, utilice %path:a=b% que reemplazará a todos a personajes con b
  3. echo. se utiliza para imprimir una nueva línea
  4. & se utiliza para separar comandos, por ejemplo echo line1&echo line2 imprimirá dos líneas
  5. 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 .

¡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 *