La recherche d'une solution pour imprimer des chemins dans la variable path
dans la ligne de commande windows est arrivée dans this solution. la réponse est cette commande:
echo %path:;=&echo.%
maintenant, je me demande comment cela fonctionne.
C'est une solution intéressante que je n'ai jamais vue auparavant. Laissez-moi essayer d'expliquer:
echo %path%
. Ceci imprimera tous les répertoires sur une seule ligne, séparés par des points-virgules (;
)%path:a=b%
qui remplacera tous les caractères a
par b
echo.
est utilisé pour imprimer une nouvelle ligne&
est utilisé pour séparer les commandes, par exemple echo line1&echo line2
imprimera deux lignes;
par rien, puis, imprimer une nouvelle ligne'. Je ne trouve aucune documentation à ce sujet, c'est donc mon interprétation. Franchement, je ne savais même pas que c'était possible, mais voilà.UPDATEMon interprétation de cette étape semble être erronée et est mieux expliquée par wizzwizz4 .Ceci utilise la substitution de variable en ligne de commande. %path:;=&echo.%
signifie "%path%
, mais remplace tout ;
s par &echo.
". Cela signifie que, avec set path=C:\Windows\System32;C:\Windows\;;C:\Python37;
:
echo %path:;=&echo.%
devient:
echo C:\Windows\System32&echo.C:\Windows\&echo.&echo.C:\Python37&echo.
Puisque &
est un séparateur de commande, cela équivaut à:
echo C:\Windows\System32
echo.C:\Windows\
echo.
echo.C:\Python37
echo.
En raison des particularités de DOS Batch, echo.
est identique à echo
sauf lorsqu'il n'y a rien après. Si c'est le cas, rien ne sera simplement imprimé, au lieu de vous indiquer si ECHO
est activé ou non. Cela fera la sortie:
C:\Users\wizzwizz4> echo %path:;&echo.%
C:\Windows\System32
C:\Windows\
C:\Python37
C:\Users\wizzwizz4>
Vraiment, il devrait être echo.%path:;=&echo.%
pour prendre en compte le cas où %PATH%
commence par un ;
, mais cette commande est quand même assez intelligente.
Pour entrer dans les detalias détaillés, vraiment echo(
devrait être utilisé à la place de echo.
. Ceci est dû au fait que echo.
peut avoir des problèmes lorsque vous avez un fichier appelé echo
et est lent car il doit vérifier le disque (%CD%
et je pense aussi tous les %PATH%
) à chaque exécution. (Je n'ai pas de copie de Windows et je ne peux donc pas le vérifier moi-même; est-ce juste %CD%
ou ailleurs dans le %PATH%
que la présence du fichier echo
affectera echo.
et que fera-t-il?)