답변:
사용자 이름:
echo %USERNAME%
도메인 이름:
echo %USERDOMAIN%
set
명령 프롬프트에서 명령 을 실행하여 전체 환경 변수 목록을 얻을 수 있습니다 .
명령 프롬프트에서이 명령을 사용하십시오.
C:\> whoami
whoami
하면을 얻습니다 desktop-machine\bballdave025
. 다음과 같은 두 부분이 있습니다. 1) echo %USERNAME%
, 결과 bballdave025
; 2) echo %USERDOMAIN%
결과 DESKTOP-MACHINE
. '완전한 사용자 이름'이 echo %USERDOMAIN%\%USERNAME%
(이 결과,, 대소 문자를 무시하고 DESKTOP-MACHINE\bballdave025
일치 whoami
) 또는 심지어 echo %USERNAME%@%USERDOMAIN%
, result 를 통해 사용할 수 있다고 말할 수 있습니다 bballdave025@DESKTOP-MACHINE
. 그것은 모두 사용자 (우리에게는 OP)에게 필요한 것 , 즉 도메인 부분이 중요한지에 달려 있습니다.
에 있어야합니다 %USERNAME%
. 분명히 이것은 쉽게 스푸핑 될 수 있으므로 보안을 위해 의존하지 마십시오.
유용한 팁 : set
명령 프롬프트에 입력하면 모든 환경 변수가 나열됩니다.
대답은 사용중인 "명령 줄 스크립트"언어에 따라 다릅니다.
이전에 cmd.exe
명령 프롬프트 또는에서 .bat
또는 .cmd
스크립트, 다음을 사용할 수 있습니다 :
%USERNAME%
-사용자 이름 만 가져옵니다.
%USERDOMAIN%
-사용자의 도메인을 가져옵니다.
PowerShell 명령 프롬프트 또는 .ps1
또는 .psm1
스크립트에서 다음을 사용할 수 있습니다.
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name
-정규화 된 사용자 이름 (예 : Domain \ Username)을 제공합니다. $Env
아래 의 다른 변수 와 같이 사용자가 재정의 할 수 없으므로 가장 안전한 방법 입니다.
$Env:Username
-사용자 이름 만 가져옵니다.
$Env:UserDomain
-사용자의 도메인을 가져옵니다.
$Env:ComputerName
-컴퓨터 이름을 가져옵니다.
% 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
Windows에 who / whoami , sed 및 AWK 와 같은 유닉스의 유용한 스크립트 유틸리티가 없는지 항상 귀찮습니다 . 어쨌든, 확실한 것을 원하면 Visual Studio Express를 가져 와서 다음을 컴파일하십시오.
#include <windows.h>
#include <stdio.h>
int main(int argc, char **argv) {
printf("%s", GetUserName());
}
그리고 배치 파일에서 사용하십시오.
net config Workstation | find "User name"
whoami
Windows Vista부터 사용할 수 있습니다.
대부분의 경우 % USERNAME % 변수는 원하는 것입니다.
echo %USERNAME%
그러나 관리자 권한 cmd 셸을 실행중인 경우 % USERNAME %은 (는) 자신의 사용자 이름 대신 관리자 이름을보고합니다. 후자를 알고 싶다면 다음을 실행하십시오.
for /f "tokens=2" %u in ('query session ^| findstr /R "^>"') do @echo %u
표준 컨텍스트에서 연결된 각 사용자는 explorer.exe 프로세스를 보유합니다. [tasklist / V | find "explorer"] 명령은 explorer.exe 프로세스 소유자가 포함 된 행을 반환합니다. 값. 이것은 Windows 7에서도 완벽하게 실행됩니다.
드문 경우지만 explorer.exe가 다른 프로그램으로 바뀌면 찾기 필터를이 경우에 맞게 조정할 수 있습니다. 명령이 빈 줄을 반환하면 로그온 한 사용자가없는 것입니다. Windows 7에서는 [query session | find ">"]를 실행할 수도 있습니다.
BlueBearr 응답이 가장 좋은 한 (예 : SYSTEM 권한으로 배치 스크립트를 실행하는 동안) 무언가를 추가해야합니다. "%% a %% b"== "사용자 이름 :"에 의해 잡히는 Windows 언어 버전 (폴란드어) 줄에서 실제로 완료됩니다 (내 언어에는 발음 구별 부호가 포함되어 있음). 처음 7 줄을 건너 뛰고 8 일에 운영합니다.
@for /f "SKIP= 7 TOKENS=3,4 DELIMS=\ " %%G in ('tasklist /FI "IMAGENAME eq explorer.exe" /FO LIST /V') do @IF %%G==%COMPUTERNAME% set _currdomain_user=%%H