Как создать команду псевдонима DOSKEY для печати Windows% PATH% с каждой записью в новой строке? - PullRequest
0 голосов
/ 20 апреля 2019

У меня та же задача, что и у Печать Windows% PATH% с каждой записью в новой строке

У меня есть задача: напечатать все записи переменной% PATH% в новой строке.Например:

C:\Program Files\
C:\Windows
C:\Windows\System32

и так далее ...

, что достигается echo %path:;=&echo.% как объяснено здесь

И я хочуназначьте его псевдониму команды, используя DOSKEY

Но следующий скрипт не работает для меня

DOSKEY list=echo %path:;=&echo.%

, который просто печатает все пути, пока я определяюDOSKEY, и после этого, когда я пытаюсь вызвать команду list, она просто не работает.

1 Ответ

1 голос
/ 22 апреля 2019

Как уже упоминал @eryksun, вам нужно избегать специальных символов.

Обновление: и для предотвращения преждевременного расширения - будет использоваться отложенное расширение.

doskey list=cmd /v:on /c "for %p in ("!path:;=" "!") do @echo %~p"

Объяснение того, как это работает: мы не можем напрямую использовать решение с echo ^%path:;=^&echo.^%, поскольку оно хранитсяв макросах уже расширен.Чтобы предотвратить это, я попытался использовать отложенное расширение (часть с cmd /v:on /c).Казалось, почти работает, но без разделения на новые строки (добавление & по некоторым причинам не работает с отложенным расширением).

Затем я начал искать способ разбиения !path! и нашел изящный прием с заменой ; на " " (двойные кавычки) ("!path:;=" "!").Это расщепление было достаточно для простого for (без опции /f).Остальное очевидно.

...