gpt4 book ai didi

cmd - 如何解决 doskey 的特殊字符,如 $L

转载 作者:行者123 更新时间:2023-12-04 14:25:26 26 4
gpt4 key购买 nike

我从这篇文章中得到了一个有用的提示:https://stackoverflow.com/a/374363/151453 ,但被 doskey 的特殊字符所困扰。

(环境:Windows 7 和 Windows XP)

使用 Visual C++ 命令行,我们有 env-vars INCLUDELIB .所以有了这个 doskey 宏,

doskey whichinclude=for %i in ($1) do @echo.%~$INCLUDE:i

我们可以很容易的找出哪个.h在哪个INCLUDE目录中最先找到,真的很方便。

enter image description here

然而,这个技巧对于 LIB 失败了。 . 我只是不能简单地编写一个宏,如:
doskey whichlib=for %i in ($1) do @echo.%~$LIB:i

调用 whichlib winsock32.lib ,它喷出 The system cannot find the file specified.
enter image description here

我启动 Procmon 以了解会发生什么,它显示:

enter image description here

所以我意识到 $Ldoskey 有特殊意义, 运行时将替换为当前驱动器号。

试试双元( @echo.%~$$LIB:i),还是不行,Procmon 报告 CMD 访问 C:\echo .

有人可以帮助我吗?

我的 doskey 书签: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/doskey.mspx?mfr=true

最佳答案

我同意 Michael Burr 的评论-使用批处理文件可能会更好。我通常不使用 DOSKEY 宏,因为它们不能在批处理文件中工作,所以它似乎毫无意义。在我看来,如果一个命令在命令行上工作,它也应该在批处理文件中工作。

但是......有可能做你想做的:)
$只有后跟一个对 DOSKEY 有特殊意义的字符才具有特殊意义。 $L被解释为 <字符(输入重定向)。 MS 文档暗示 $$L应该给一个 $L字面意思,但正如您所发现的那样,文档不正确。

DOSKEY $ 替换发生在正常的命令行解析之前。嵌入文字的技巧 $L在您的宏定义中是在 $ 之间放置一个中间字符和 L它不被 DOSKEY 视为特殊的,但在正常的命令行解析过程中会消失 - ^完美地工作。 $^对 DOSKEY 没有特殊意义,^L简单地变成 L在命令行解析期间。

您可以使用 DOSKEY /M 列出 DOSKEY 宏的定义。 .

您需要的完整定义是 whichlib=for %i in ($1) do @echo(%~$^LIB:i .
^定义宏时必须转义。因此,定义宏的完整行变为:

doskey whichlib=for %i in ($1) do @echo(%~$^^LIB:i

关于cmd - 如何解决 doskey 的特殊字符,如 $L,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16533875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com