我的任务与打印窗口%PATH%相同,每个条目都在新行上
我有一个任务:在新行上打印 %PATH% 变量的所有条目。例如:
C:Program Files
C:Windows
C:WindowsSystem32
等等...
这可以通过echo %path:;=&echo.%
实现,如此处所述
我想使用 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!
的方法,并发现了一个巧妙的技巧,将;
替换为" "
(双引号空格(("!path:;=" "!"
(。这种拆分对于普通for
来说已经足够好了(没有/f
选项(。其余的都是显而易见的。