使用setx分配空系统变量

时间:2016-08-09 03:20:24

标签: batch-file

我需要一个系统变量并为其分配一个空字符串值。我试过了

setx samplepassword ""

但是在echo %samplepassword%之后,空字符串应该是%samplepassword%。现在我在文档中找到了这个

  

设置值“”(空引号)将显示为删除变量    - SET没有显示它,但变量名将保留在注册表中。

http://ss64.com/nt/setx.html

如何使用setx分配空系统变量?

更新: 我通过Windows GUI检查了环境变量:Control Panel | System | Advanced | Environment Variables并看到DB_PASSWORD确实是用空字符串值初始化的。但为什么执行echo %samplepassword%给我上述输出?我准确地打开了一个新的cmd实例。

2 个答案:

答案 0 :(得分:3)

从技术上讲,您可以创建一个空的环境变量,但不能创建setx

以管理员身份运行

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment"  /v TESTENV /d ""

添加了注册表项:

enter image description here

它甚至可以在环境变量系统面板中显示

enter image description here

但在调用set

时不在列表中

所以即使有可能,也没用。但它可能会欺骗一些测试环境的程序。通过检查注册表项是否存在来存在变量。所以它甚至可能适得其反,也可能造成混乱。

答案 1 :(得分:2)

  

我认为你在这里有一种误解。没有办法分配   "空字符串"到环境(批处理)变量。命令集   " samplepassword ="删除变量,所以echo"%samplepassword%"   只是显示""。你不需要setx命令来做到这一点,也不需要setx   修改此行为。 - Aacini 8月9日4:39

TL; DR:从技术上讲,无法在环境中创建空变量。 - Aacini