Buscando una solución para imprimir parches dentro de la path
variable en Windows Command-Line, llegué a esta solución. la respuesta es este comando:
echo %path:;=&echo.%
ahora me pregunto cómo funciona esto.
windows
command-line
yekanchi
fuente
fuente
echo.
puede no funcionar .Respuestas:
Esa es una solución interesante que nunca he visto antes. Déjame intentar explicar:
echo %path%
. Esto imprimirá todos los directorios en una sola línea separada con punto y coma (;
)%path:a=b%
cual reemplazará todos losa
caracteres conb
echo.
se usa para imprimir una nueva línea&
se usa para separar comandos, por ejemploecho line1&echo line2
, imprimirá dos líneas;
con nada, y luego imprimir una nueva línea'. No puedo encontrar ninguna documentación sobre esto, así que es solo mi interpretación. Francamente, ni siquiera sabía que eso era posible, pero ahí lo tienes. ACTUALIZACIÓN Mi interpretación de este paso parece estar apagada, y wizzwizz4 lo explica mejor .fuente
echo path
? ¿Se utiliza %% para las variables?set greeting=Hello
y luegoecho %greeting%
. Confusamente,PATH
resulta ser tanto un comando como una variable, por lo que escribir el comandopath
oecho %path%
tendrá el mismo resultado.$PATH
por ejemplo.echo.
no es "el comando para imprimir una nueva línea". Este es el intérprete de comandos de Microsoft para Windows NTcmd
; yecho.
simplemente es el comando para imprimir un elemento de ruta asegurando que si el elemento de ruta está vacío, no cambie a la otra funcionalidad deecho
. El primeroecho
realmente debería ser unecho.
también.Esto está utilizando la sustitución de variables de línea de comandos.
%path:;=&echo.%
significa "%path%
, pero reemplaza todas las;
s con&echo.
". Esto significa que, conset path=C:\Windows\System32;C:\Windows\;;C:\Python37;
:se convierte en:
Como
&
es un separador de comandos, esto es equivalente a:Debido a las peculiaridades de DOS Batch,
echo.
es idéntico,echo
excepto cuando no hay nada después. Si ese es el caso, simplemente no imprime nada, en lugar de decirle siECHO
está activado o desactivado. Esto hará que la salida:Realmente, debería ser
echo.%path:;=&echo.%
para tener en cuenta el caso donde%PATH%
comienza con a;
, pero este comando es bastante inteligente de todos modos.Entrar en detalles detalias, realmente
echo(
debería usarse en lugar deecho.
. Esto se debe a queecho.
puede tener problemas cuando se llama un archivoecho
y es lento porque tiene que verificar el disco (%CD%
y creo que también todo%PATH%
) cada vez que se ejecuta. (No tengo una copia de Windows, así que no puedo verificarlo yo mismo; ¿es solo%CD%
en cualquier lugar%PATH%
que la presencia delecho
archivo afecteecho.
y qué hace?)fuente
echo)
, pero realmente no lo recuerdo. ;-(echo.
es el que solía circular la gente hace años. Es el único en muchos libros. La eficiencia no es el problema. El comportamiento extraño cuando existen varios archivos es. Cuando escribí un reemplazo de 32 bits para 16 bitscmd
en OS / 2, romper los nombres de los comandos en estos caracteres de puntuación y este comportamiento de análisis altamente irregular es una de las cosas que deliberadamente no dupliqué, y que puse en el documento documentado lista de diferencias En suechodot
lugar, hice un comando externo , cuál podría alias segúnecho.
lo deseado.echo(
es la única versión segura.