我正在为一天中的大部分时间都在努力寻找解决方案。总之,我的困境似乎很简单。基于我在此处使用的Google和Stackoverflow hits ,一个有效的解决方案似乎难以捉摸。
( EDIT )
我需要澄清用例。我们可能有6个用户需要运行某些使用“%USERNAME%
”字符串的脚本来登录区分大小写的环境,Linux,MySQL等。一个用户名是混合大小写 。在示例中,我使用了我的名字:“Will”,它必须是脚本:“will”(全部为小写)。
- 一般问题是%USERNAME%环境变量值在错误输入时如何更改?
目前我的Windows 7 Professional用户名是“will”,但环境变量的值为:
echo. User = %USERNAME%
User = Will
我需要它出现:
User = will
rem * All lower-case
要清楚......
我想更改(源)值Windows在我登录时设置USERNAME环境变量。
我认为找到设置或配置选项以更改该字符串是 easy - 直到我尝试过。我认为这必须经常发生在与让USERNAME一起使用cygwin等相关的问题上。
问题
也困扰我,因为这是一个混乱的脚本,以“修复”在登录环境中基本的东西。
我也在办公室周围进行了快速调查。有些人有混合案例,有一两个人有小写。根据创建帐户时输入的内容或其他内容,它似乎是随意的。
我们的管理员在域上查找我的帐户(不,不是活动目录),与我的登录屏幕相同,“将”(小写)。
最后我做了几个实验。我在“用户”控制面板中更改了用户名
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 :(得分: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
也许这可能会有所帮助。 YMMV。
答案 1 :(得分:0)
我不认为有一种方法可以完全按照您的意思说,但是这可能是可以实现的,您可以通过在定义用户名的位置进行操作来了解。
•首先,存在用户文件夹C:\user\username1
,该文件夹是在创建用户时定义的。 (我认为)可以更改(我只看过它的引用,但是有很多引用,很容易找到)。
•其次,有Control Panel > User Accounts > Change My Name
。这似乎与您的$ env:USERNAME
•最后,有lusrmgr.msc > Users
。该名称与您的“真实”用户名关系最紧密,并且与[Security.Principal.WindowsIdentity]::GetCurrent()
保持一致
我说“真实”是因为我最近在尝试使用ssh-keygen
创建公用密钥时发现了这一点,尽管我的显示名称和$ env:USERNAME设置为“ Name1”,但是ssh-keygen
只会看到“ Name2”,我不得不更改lusrmgr.msc
中的名称以解决此问题(需要重新启动)。
这是一个旧帖子,但是发布以防遇到类似问题的任何人。