如何创建 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
选项)来说已经足够好了。其余的显而易见。
我有和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
选项)来说已经足够好了。其余的显而易见。