我需要一个系统变量,并将一个空字符串值赋给它。我试过了
setx samplepassword ""但是在echo %samplepassword%上,应该是空字符串的是%samplepassword%。现在我在文档里找到了这个
"“(空引号)的设置值将显示为删除变量--它不会由SET显示,但变量名将保留在注册表中。
http://ss64.com/nt/setx.html
如何使用setx分配空系统变量?
更新:我已经通过Windows:Control Panel | System | Advanced | Environment Variables检查了环境变量,并且看到DB_PASSWORD确实是用一个空字符串值初始化的。但是为什么执行echo %samplepassword%会给我上面的输出呢?准确地说,我打开了一个cmd的新实例。
发布于 2016-08-23 08:13:10
我觉得你在这里有个误解。无法将“空字符串”分配给环境(批处理)变量。命令集"samplepassword=“删除变量,因此回显"%samplepassword%”“只显示”。您不需要使用setx命令,也不需要setx可以修改此行为。-8月9日4:39 Aacini
TL;DR:从技术上讲,不可能在环境中创建一个空变量。- https://stackoverflow.com/users/778560/aacini
发布于 2016-08-09 13:00:36
从技术上讲,您可以创建一个空的环境变量,但不能使用setx。
以管理员的身份运行
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment" /v TESTENV /d ""添加了注册表项:

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

但在调用set时不在列表中
因此,即使这是可能的,它也是相当无用的。然而,如果env的话,它可能会欺骗一些程序测试。变量通过检查注册表项是否存在而存在。因此,它甚至可能适得其反,而且会造成混乱。
发布于 2021-12-20 08:38:44
我也有同样的问题,得到一个文件名,无论有没有后缀。您可以使用字符串前缀和字符串提取来解决这个问题(参见here)。
two thingsone thing使用%SUFFIX:~1%,您可以取消字符串前缀(在本例中为?),并获取字符串的其余部分。剩下的可以是空的。
https://stackoverflow.com/questions/38841499
复制相似问题