La recherche d'une solution pour imprimer les chemins à l'intérieur des path
variables dans la ligne de commande Windows est arrivée à cette solution. la réponse est cette commande:
echo %path:;=&echo.%
maintenant je me demande comment ça marche.
windows
command-line
yekanchi
la source
la source
echo.
peut ne pas fonctionner .Réponses:
C'est une solution intéressante que je n'ai jamais vue auparavant. Permettez-moi d'essayer d'expliquer:
echo %path%
. Cela affichera tous les répertoires sur une seule ligne séparée par des points-virgules (;
)%path:a=b%
qui remplacera tous lesa
caractères parb
echo.
est utilisé pour imprimer une nouvelle ligne&
est utilisé pour séparer les commandes, par exempleecho line1&echo line2
imprime deux lignes;
par rien, puis imprimer une nouvelle ligne». Je ne trouve aucune documentation à ce sujet, c'est juste mon interprétation. Franchement, je ne savais même pas que c'était possible, mais voilà. MISE À JOUR Mon interprétation de cette étape semble être fausse et est mieux expliquée par wizzwizz4 .la source
echo path
? %% est-il utilisé pour les variables?set greeting=Hello
et ensuiteecho %greeting%
. Confusément,PATH
se trouve être à la fois une commande et une variable, donc taper la commandepath
, ouecho %path%
aura le même résultat.$PATH
par exemple.echo.
n'est pas "la commande pour imprimer une nouvelle ligne". Ceci est l'interpréteur de commandes de Microsoft pour Windows NT,cmd
; etecho.
est simplement la commande pour imprimer un élément path en s'assurant que si l'élément path est vide, il ne passe pas à l' autre fonctionnalité deecho
. Le premierecho
devrait vraiment être unecho.
trop.Ceci utilise la substitution de variable en ligne de commande.
%path:;=&echo.%
signifie "%path%
, mais remplacez tous les;
s par&echo.
". Cela signifie qu'avecset path=C:\Windows\System32;C:\Windows\;;C:\Python37;
:devient:
Étant donné qu'il
&
s'agit d'un séparateur de commandes, cela équivaut à:En raison des caprices de DOS Batch,
echo.
est identique àecho
sauf quand il n'y a rien après. Si tel est le cas, il n'imprime simplement rien, au lieu de vous dire s'ilECHO
est activé ou désactivé. Cela rendra la sortie:Vraiment, cela devrait être
echo.%path:;=&echo.%
pour tenir compte du cas où%PATH%
commence par un;
, mais cette commande est quand même assez intelligente.Entrer dans des détails détaillés, devrait vraiment
echo(
être utilisé à la place deecho.
. C'est parce queecho.
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%PATH%
) à chaque fois qu'il s'exécute. (Je n'ai pas de copie de Windows, je ne peux donc pas le vérifier moi-même; est-ce juste%CD%
ou n'importe où dans%PATH%
leecho
fichier que la présence du fichier affecteraecho.
, et que fait-il?)la source
echo)
, mais je ne m'en souviens pas vraiment. ;-(echo.
est celui que les gens circulaient le plus il y a des années. C'est celui de nombreux livres. L'efficacité n'est pas le problème. Comportement loufoque lorsque divers fichiers existent. Lorsque j'ai écrit un remplacement 32 bits pour le 16 bitscmd
dans OS / 2, la rupture des noms de commande à ces caractères de ponctuation et ce comportement d'analyse très irrégulier est l'une des choses que je n'ai pas délibérément dupliqué et que j'ai mis sur le documenté liste des différences. J'aiechodot
plutôt fait une commande externe , que l'on pourrait alias comme onecho.
le souhaite.echo(
est la seule version sûre.