如何创建 DOSKEY 别名命令以在新行的每个条目中打印 Windows %PATH%?

How to create a DOSKEY alias command to print Windows %PATH% with every entry on new line?

我有和Print Windows %PATH% with every entry on new line

一样的任务

我有一个任务:在新行上打印 %PATH% 变量的所有条目。例如:

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

等等...

echo %path:;=&echo.% 可以达到 here

我想使用 DOSKEY

将其分配给命令别名

但是下面的脚本对我来说失败了

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

它只是在我定义 DOSKEY 时打印所有路径,之后,当我尝试调用 list 命令时,它就不起作用了。

如@eryksun 所述,您需要转义特殊字符。

更新:为了防止过早扩展 - 将使用延迟扩展。

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

这是如何工作的解释:我们不能直接使用 echo ^%path:;=^&echo.^% 的解决方案,因为它存储在已经展开的宏中。为了防止这种情况,我尝试使用延迟扩展(带有 cmd /v:on /c 的部分)。它似乎几乎可以工作,但没有在新行上拆分(由于某种原因添加 & 不适用于延迟扩展)。

然后我开始寻找拆分 !path! 的方法,并找到了一个巧妙的技巧,将 ; 替换为 " "(双引号 space)("!path:;=" "!").这种拆分对于普通 for(没有 /f 选项)来说已经足够好了。其余的显而易见。