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

问题描述 投票:0回答:1

我和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命令时,它只是不起作用。

windows cmd echo doskey
1个回答
1
投票

正如@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选项)来说已经足够了。其余的很明显。

© www.soinside.com 2019 - 2024. All rights reserved.