Al ejecutar un script de línea de comandos, ¿es posible obtener el nombre del usuario actual?
windows
batch-file
Geo
fuente
fuente
Respuestas:
Puede usar la variable de nombre de usuario:
%USERNAME%
fuente
Nombre de usuario
Nombre de dominio:
Puede obtener una lista completa de variables de entorno ejecutando el comando
set
desde el símbolo del sistema.fuente
Simplemente use este comando en el símbolo del sistema
fuente
whoami
, me saledesktop-machine\bballdave025
. Hay dos partes, vistas a través de: 1)echo %USERNAME%
, resultadobballdave025
; 2)echo %USERDOMAIN%
, resultadoDESKTOP-MACHINE
. Supongo que uno podría decir que el 'nombre de usuario completo' está disponible a través deecho %USERDOMAIN%\%USERNAME%
(este resultadoDESKTOP-MACHINE\bballdave025
, coincide con el dewhoami
, ignorando mayúsculas y minúsculas), o incluso a través deecho %USERNAME%@%USERDOMAIN%
, resultadobballdave025@DESKTOP-MACHINE
. Todo depende de lo que el usuario (para nosotros, el OP) necesite , es decir, si la parte del dominio es importante.Debería estar adentro
%USERNAME%
. Obviamente, esto se puede suplantar fácilmente, así que no confíes en él por seguridad.Consejo útil: escriba
set
un símbolo del sistema que enumerará todas las variables de entorno.fuente
%USERNAME%
es la respuesta correcta en lotes y otros en entornos Windows.Otra opción es usar
%USERPROFILE%
para obtener la ruta del usuario, comoC:\Users\username
.fuente
La respuesta depende del idioma en que se encuentre el "script de línea de comandos".
Cmd
En el
cmd.exe
símbolo del sistema anterior o en un script.bat
o.cmd
, puede usar lo siguiente:%USERNAME%
- Obtiene solo el nombre de usuario.%USERDOMAIN%
- Obtiene el dominio del usuario.Potencia Shell
En el símbolo del sistema de PowerShell o un script
.ps1
o.psm1
, puede usar lo siguiente:[System.Security.Principal.WindowsIdentity]::GetCurrent().Name
- Le da el nombre de usuario completo (por ejemplo, Dominio \ Nombre de usuario). Este también es el método más seguro porque el usuario no puede anularlo como las otras$Env
variables a continuación.$Env:Username
- Obtiene solo el nombre de usuario.$Env:UserDomain
- Obtiene el dominio del usuario.$Env:ComputerName
- Obtiene el nombre de la computadora.fuente
% USERNAME% le dará el nombre de usuario del proceso actualmente en ejecución. Dependiendo de cómo esté ejecutando su archivo por lotes, esto no es necesariamente el mismo que el nombre del usuario actual. Por ejemplo, puede estar ejecutando su archivo por lotes a través de una tarea programada, desde un servicio, etc.
Aquí hay una forma más segura de obtener el nombre de usuario del usuario actualmente conectado al raspar el nombre del usuario que inició la tarea explorer.exe:
fuente
Utilizo este método al escribir archivos por lotes para realizar pruebas.
Dado que debe incluir la contraseña en texto sin formato si se requiere autenticación, solo la usaré en un entorno completamente privado donde otros usuarios no puedan verla o si un usuario que ve la contraseña no tendría consecuencias.
Espero que esto ayude a alguien.
fuente
Siempre me ha molestado que Windows no tenga algunas de las pequeñas utilidades de scripts más útiles de Unix, como who / whoami , sed y AWK . De todos modos, si quieres algo infalible, obtén Visual Studio Express y compila lo siguiente:
Y solo utilízalo en tu archivo por lotes.
fuente
net config Workstation | find "User name"
whoami
está disponible a partir de Windows Vista.En la mayoría de los casos, la variable% USERNAME% será lo que desee.
Sin embargo, si está ejecutando un shell de cmd elevado,% USERNAME% informará el nombre del administrador en lugar de su propio nombre de usuario. Si quieres saber lo último, ejecuta:
fuente
Esta es la principal diferencia entre la variable de nombre de usuario y el comando whoami:
fuente
En un contexto estándar, cada usuario conectado tiene un proceso explorer.exe: el comando [tasklist / V | find "explorer"] devuelve una línea que contiene el propietario del proceso explorer.exe, con una expresión regular adaptada es posible obtener el requerido valor. Esto también funciona perfectamente con Windows 7.
En casos excepcionales, explorer.exe es reemplazado por otro programa, el filtro de búsqueda se puede adaptar para que coincida con este caso. Si el comando devuelve una línea vacía, es probable que ningún usuario haya iniciado sesión. Con Windows 7 también es posible ejecutar [sesión de consulta | buscar ">"].
fuente
En lo que respecta a encontrar la mejor respuesta de BlueBearr (mientras estoy ejecutando mi script por lotes con, por ejemplo, derechos de sistema) tengo que agregarle algo. Porque en mi línea de versión de idioma de Windows (polaco) que debe ser captada por "%% a %% b" == "Nombre de usuario:" REALMENTE COMPLICADO (contiene algunos caracteres diacríticos en mi idioma) omito las primeras 7 líneas y operar el día 8
fuente