Mag*_*dhe 81
用户名:
echo %USERNAME%
Run Code Online (Sandbox Code Playgroud)
域名:
echo %USERDOMAIN%
Run Code Online (Sandbox Code Playgroud)
您可以通过set
从命令提示符运行命令来获取环境变量的完整列表.
the*_*ill 44
它应该在%USERNAME%
.显然这很容易被欺骗,所以不要依赖它来保证安全.
有用的提示:set
命令提示符中的类型将列出所有环境变量.
答案取决于您使用的是哪种“命令行脚本”语言。
在旧的cmd.exe
命令提示符或 a .bat
or.cmd
脚本中,您可以使用以下内容:
%USERNAME%
- 只获取用户名。
%USERDOMAIN%
- 获取用户的域。
在 PowerShell 命令提示符或 a.ps1
或.psm1
脚本中,您可以使用以下内容:
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name
- 为您提供完全限定的用户名(例如域\用户名)。这也是最安全的方法,因为它不能像$Env
下面的其他变量一样被用户覆盖。
$Env:Username
- 只获取用户名。
$Env:UserDomain
- 获取用户的域。
$Env:ComputerName
- 获取计算机的名称。
小智 7
%USERNAME% 将为您提供当前正在运行的进程的用户名。根据您运行批处理文件的方式,这不一定与当前用户的名称相同。例如,您可能正在通过计划任务、服务等运行批处理文件。
这是通过抓取启动 explorer.exe 任务的用户的名称来获取当前登录用户的用户名的更可靠的方法:
for /f "TOKENS=1,2,*" %%a in ('tasklist /FI "IMAGENAME eq explorer.exe" /FO LIST /V') do if /i "%%a %%b"=="User Name:" set _currdomain_user=%%c
for /f "TOKENS=1,2 DELIMS=\" %%a in ("%_currdomain_user%") do set _currdomain=%%a & set _curruser=%%b
Run Code Online (Sandbox Code Playgroud)
小智 6
我在编写批处理文件时使用这种方法进行测试。
echo %userdomain%\%username%
Run Code Online (Sandbox Code Playgroud)
由于如果需要身份验证,您必须以纯文本形式包含密码,因此我只会在其他用户无法查看它的完全私密的环境中使用它,或者如果用户看到密码不会承担任何后果。
希望这可以帮助某人。
在大多数情况下,%USERNAME% 变量就是您想要的。
echo %USERNAME%
Run Code Online (Sandbox Code Playgroud)
但是,如果您正在运行提升的 cmd shell,则 %USERNAME% 将报告管理员名称而不是您自己的用户名。如果您想了解后者,请运行:
for /f "tokens=2" %u in ('query session ^| findstr /R "^>"') do @echo %u
Run Code Online (Sandbox Code Playgroud)
Windows 没有一些 Unix 中更有用的小脚本实用程序,例如who / whoami、sed和AWK ,这一直让我很恼火。无论如何,如果你想要万无一失的东西,请获取 Visual Studio Express 并编译以下内容:
#include <windows.h>
#include <stdio.h>
int main(int argc, char **argv) {
printf("%s", GetUserName());
}
Run Code Online (Sandbox Code Playgroud)
只需在批处理文件中使用它即可。
归档时间: |
|
查看次数: |
306962 次 |
最近记录: |