如果直接在 CMD 中或通过 Windows 变量工具设置,%PROMPT% 变量的解析方式会有所不同

如果直接在 CMD 中或通过 Windows 变量工具设置,%PROMPT% 变量的解析方式会有所不同

当我尝试自定义命令提示符时,我遇到了一个奇怪的行为:

从 CMD 行

SET set prompt=$D $T$H$H$H$_%USERNAME%@%COMPUTERNAME%$_$P$G

按预期工作:

28/05/2020 12:02:15
DDS@DDS-PC
C:\Users\DDS>

但如果我设置相同的变量编辑:(在“用户 DDS 的变量”中)使用与 Windows 实用程序中相同的值来设置变量,我得到了:

28/05/2020 12:04:18
SYSTEM@DDS-PC
C:\Users\DDS>

注意:实用程序本身在编辑变量时正确显示 DDS 值,只是命令提示符解析%USERNAME%SYSTEM

答案1

当您从系统应用程序执行该程序时,它将在 SYSTEM 用户下运行。

请记住,变量不会随着每次提示而更新。这意味着如果您要更改用户名,您的提示不会更改。它将成为静态文本。假设您使用提示变量来表示日期,它们会更新,但计算机名称和用户名不会更新。

我认为这不会是一个大问题,但你可以做两件事来解决这个问题。要么不使用 %USERNAME%,而只写出你的用户名(反正这无所谓),要么使用命令提示符正确设置提示符,然后使用以下命令将其推送到系统:

setx PROMPT %PROMPT%

要测试这一点,请尝试在提示符中使用 %CD%,然后更改目录。请注意,提示符仍然显示旧目录。

相关内容