Respostas:
Essa é uma solução interessante que eu nunca vi antes. Deixe-me tentar explicar:
echo %path%. Isso imprimirá todos os diretórios em uma única linha separada por ponto e vírgula ( ;)%path:a=b%que substituirá todos os acaracteres porbecho. é usado para imprimir uma nova linha&é usado para separar comandos, por exemplo echo line1&echo line2, imprimirá duas linhas;por nada e , em seguida , imprimir uma nova linha'. Não consigo encontrar nenhuma documentação sobre isso, então é apenas minha interpretação. Francamente, eu nem sabia que isso era possível, mas lá vai você. ATUALIZAÇÃO Minha interpretação desta etapa parece estar errada e é melhor explicada por wizzwizz4 .echo path? %% são usados para variáveis?
set greeting=Helloe então echo %greeting%. De maneira confusa, PATHpassa a ser um comando e uma variável, portanto, digitando o comando path, ou echo %path%terá o mesmo resultado.
$PATHpor exemplo.
echo.não é "o comando para imprimir uma nova linha". Este é o interpretador de comandos da Microsoft para Windows NT cmd; e o echo.é simplesmente o comando para imprimir um elemento do caminho, garantindo que, se o elemento do caminho estiver vazio, ele não mude para a outra funcionalidade deecho . O primeiro também echodeve ser um echo..
Isso está usando a substituição de variável da linha de comando. %path:;=&echo.%significa " %path%, mas substitua todos os ;s por &echo.". Isso significa que, com set path=C:\Windows\System32;C:\Windows\;;C:\Python37;:
echo %path:;=&echo.%
torna-se:
echo C:\Windows\System32&echo.C:\Windows\&echo.&echo.C:\Python37&echo.
Como &é um separador de comandos, isso é equivalente a:
echo C:\Windows\System32
echo.C:\Windows\
echo.
echo.C:\Python37
echo.
Devido a peculiaridades do lote do DOS, echo.é idêntico, echo exceto quando não há nada depois. Se for esse o caso, ele simplesmente imprime nada, em vez de dizer se ECHOestá ativado ou desativado. Isso fará com que a saída:
C:\Users\wizzwizz4> echo %path:;&echo.%
C:\Windows\System32
C:\Windows\
C:\Python37
C:\Users\wizzwizz4>
Realmente, deve-se echo.%path:;=&echo.%considerar o caso em que %PATH%começa com a ;, mas esse comando é bastante inteligente de qualquer maneira.
Entrando em detalhes detalhados, realmente echo( deve ser usado em vez de echo.. Isso ocorre porque echo.pode haver problemas quando você tem um arquivo chamado echoe é lento porque ele precisa verificar o disco ( %CD%e acho que todos %PATH%) toda vez que ele é executado. (Eu não tenho uma cópia do Windows, portanto não posso verificá-la; é apenas %CD%ou em qualquer lugar %PATH%que a presença do echoarquivo afetará echo.e o que ele faz?)
echo), mas não me lembro. ;-(
echo.é o que as pessoas costumavam circular mais, anos atrás. É o único em muitos livros. Eficiência não é o problema. É um comportamento maluco quando existem vários arquivos. Quando escrevi uma substituição de 32 bits para os 16 bits cmdno OS / 2, a quebra de nomes de comandos nesses caracteres de pontuação e esse comportamento de análise altamente irregular são uma das coisas que eu não dupliquei deliberadamente e que coloquei no documento lista de diferenças. Em echodotvez disso, criei um comando externo , que poderia ser alternativo, echo.conforme desejado.
echo(é a única versão segura.
echo.pode não funcionar .