![如果直接在 CMD 中或通过 Windows 变量工具设置,%PROMPT% 变量的解析方式会有所不同](https://linux22.com/image/1624813/%E5%A6%82%E6%9E%9C%E7%9B%B4%E6%8E%A5%E5%9C%A8%20CMD%20%E4%B8%AD%E6%88%96%E9%80%9A%E8%BF%87%20Windows%20%E5%8F%98%E9%87%8F%E5%B7%A5%E5%85%B7%E8%AE%BE%E7%BD%AE%EF%BC%8C%25PROMPT%25%20%E5%8F%98%E9%87%8F%E7%9A%84%E8%A7%A3%E6%9E%90%E6%96%B9%E5%BC%8F%E4%BC%9A%E6%9C%89%E6%89%80%E4%B8%8D%E5%90%8C.png)
当我尝试自定义命令提示符时,我遇到了一个奇怪的行为:
从 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%,然后更改目录。请注意,提示符仍然显示旧目录。