2016-04-05 36 views
0

我在为大部分时间挣扎之后寻找解决方案。总之我的困境看起来很简单。一个有效的解决方案似乎难以捉摸的基础上谷歌和Stackoverflow 点击我有这一个。如何更改Windows USERNAME环境变量字符串?

EDIT
我需要澄清用例。我们可能有6个用户需要运行使用“%USERNAME%”字符串登录到区分大小写的环境,Linux,MySQL等的某些脚本。一个用户名是混合案例。在这个例子中,我使用了我的名字:“Will”,它必须是“will”(全部小写)。

  • 虽然普遍的问题是%USERNAME%环境变量的值怎么会改变,当它被误进入

目前我的Windows 7专业版的用户名是 “将”,但环境变量有这个值:

echo. User = %USERNAME% 
    User = Will 

我需要它来输出为:

User = will 
rem  * All lower-case 

要清楚...

我想ch ange(源)值当我登录时,Windows设置USERNAME环境变量。

我认为这将是容易找到设置或配置选项来改变这个字符串 - 直到我试过了。我想,这一定会发生从相关得到一个用户名的问题经常判断与Cygwin的工作,等等。

问题

困扰我太多,因为这是一个混乱的脚本“修复”在登录环境中很基本。

我也在办公室做了一个快速调查。有些人有混合的情况,有一两个小写字母。这看起来是任意的,具体取决于帐户创建时输入的内容或其他内容。

我们的管理员在域名(不,不是活动目录)上查找我的帐户,与我的登录屏幕“will”(小写)相同。

最后我做了一些实验。我在Users控制面板中更改了我的用户名

from: "will" to "xxwill" 

想一想肯定会更新我的USERNAME字符串。我退出了。我又做了一次,第二次重新启动。结果是非常令人惊讶的(或者它本不应该是):

User = Will 
rem  * NO change for the "xxwill" name-change! 

有些更深层次的。我创建了一个账户“dodo”和账户“Dogdo”,并分别将用户名改为“Dodo”和“dogdo”。

User = dodo 
    User = Dogdo 
rem  * NO change for name-changes! 

我看到USERNAME不能被这样改变。我无法编辑高级选项中的系统环境变量。它可能在配置文件中。但你可以编辑一个配置文件,甚至看里面它只有管理员权限?我还不知道;我不确定这是我的首选路由,因为它是从某个原始设置某处某处“输出”的黑客行为。

我希望有人可以直接设置我,所以我不需要脚本解决方案。

回答

0
@ECHO OFF 
SETLOCAL 
PUSHD "%temp%" 
COPY NUL "%username%" >NUL 2>NUL 
FOR /f "delims=" %%a IN ('dir /L /b "%username%"') DO set "usernamelc=%%a" 
del "%username%" >NUL 2>NUL 
POPD 
ECHO %USERNAME% --^> %usernamelc% 
GOTO :EOF 

也许这可能会有所帮助。因人而异。

+0

我想不需要操纵该值。我认为Windows应该将USERNAME设置为我登录的名称。由于它不会 - 我需要明确地改变它。如果可能。 – will

+0

如果需要,您可以直接设置'username'而不是'usernamelc',但是这样的设置仅适用于当前'cmd'实例。对于创建每个实例的其他实例重新建立它,但将其设置为用户变量覆盖系统设置(在该cmd实例中) – Magoo

+0

我认为必须存在误解。在你的Windows PC上创建一个“Fred”的用户名。然后将登录用户的名称改为(比如):“Malcom”。所以现在用户名是“Malcom”。当你以_Malcom_的身份登录并打印'echo%USERNAME%'时......输出应为“Fred”(永远如此)。我想知道,如何在登录过程中修改_loaded-in-to_ ... USERNAME字符串。 – will