Ответы:
Это интересное решение, которое я никогда не видел раньше. Позвольте мне попытаться объяснить:
echo %path%
. Это выведет все каталоги в одну строку, разделенную точкой с запятой ( ;
)%path:a=b%
которая заменит все a
символы наb
echo.
используется для печати новой строки&
используется для разделения команд, например echo line1&echo line2
, напечатает две строки;
ничем, а затем вывести новую строку». Я не могу найти никакой документации по этому вопросу, так что это просто моя интерпретация. Честно говоря, я даже не знал, что это возможно, но вот, пожалуйста. ОБНОВЛЕНИЕ Моя интерпретация этого шага, похоже, неверна , и ее лучше объяснить с помощью wizzwizz4 .echo path
? %% используется для переменных?
set greeting=Hello
и тогда echo %greeting%
. Заблуждение, PATH
случается, что это и команда, и переменная, поэтому ввод команды path
или echo %path%
будет иметь один и тот же результат.
$PATH
Например, другие языки, такие как bash .
echo.
не является «командой для печати новой строки». Это интерпретатор команд Microsoft для Windows NT cmd
; и echo.
просто команда для печати элемента пути, гарантирующая, что если элемент пути пуст, он не переключается на другие функцииecho
. Первое echo
действительно должно быть echo.
слишком.
Это использует подстановку переменных командной строки. %path:;=&echo.%
означает " %path%
, но замените все ;
s на &echo.
". Это означает, что при set path=C:\Windows\System32;C:\Windows\;;C:\Python37;
:
echo %path:;=&echo.%
будет выглядеть так:
echo C:\Windows\System32&echo.C:\Windows\&echo.&echo.C:\Python37&echo.
Поскольку &
это разделитель команд, это эквивалентно:
echo C:\Windows\System32
echo.C:\Windows\
echo.
echo.C:\Python37
echo.
Из-за причуд DOS Batch, echo.
идентичен, за echo
исключением случаев, когда после него ничего нет. Если это так, он просто ничего не печатает, вместо того, чтобы сообщать, включен ECHO
он или нет. Это сделает вывод:
C:\Users\wizzwizz4> echo %path:;&echo.%
C:\Windows\System32
C:\Windows\
C:\Python37
C:\Users\wizzwizz4>
Действительно, следует echo.%path:;=&echo.%
учитывать случай, когда %PATH%
начинается с a ;
, но в любом случае эта команда довольно умная.
Попадая в подробные детали, действительно echo(
следует использовать вместо echo.
. Это потому, что echo.
могут возникнуть проблемы, когда у вас есть файл с именем echo
, и он медленный, потому что он должен проверять диск ( %CD%
и я думаю, что также все %PATH%
) каждый раз, когда он запускается. (Я не имею копию Windows , так что я не могу проверить это сам, это просто %CD%
или где - нибудь в %PATH%
том , что наличие echo
файла будет влиять echo.
и то , что он делает?)
echo)
, но я действительно не помню. ;-(
echo.
это тот, который люди использовали чаще всего, много лет назад. Это один во многих книгах. Эффективность не проблема. Странное поведение, когда существуют разные файлы. Когда я написал 32-битную замену для 16-битной cmd
в OS / 2, нарушение имен команд в этих знаках препинания и это крайне нерегулярное поведение при разборе - это одна из вещей, которые я намеренно не дублировал, и которую я поставил на документированный список отличий. echodot
Вместо этого я сделал внешнюю команду, которая может быть псевдонимом echo.
по желанию.
echo(
попадаете на сторонний форум с сообщением о том, что это единственная безопасная версия.
echo.
может не работать .