Принятый ответ (на момент публикации) состоит из 4 строк кода, когда вам нужен только один, чтобы сделать то же самое:
for /f "tokens=2*" %n in ('net user "%USERNAME%" /domain^|FINDSTR /C:"Full Name"') do echo "%o"
Это будет работать, даже если полное имя имеет более 2частей.Работает на рабочих станциях Windows "из коробки" и не требует прав администратора.
ПРИМЕЧАНИЕ. Не забудьте изменить значения %n
и %o
на %%n
и %%o
соответственно при использовании впакетный файл.
Объяснение команды:
"tokens=2*
указывает, что единственные токены, на которые он будет обращать внимание, это 2-й токен (назначенный %n
)и все после него (назначается следующей букве: %o
)
По умолчанию delims
- это пробел, поэтому нам не нужно его определять, но если нам нужно определить его вручную, он будетбыть следующим: "tokens=2* delims= "
.Поскольку пробел является разделителем, он будет игнорировать все начальные пробелы.
Канал (|
) экранируется морковью (^
), что говорит командному процессору игнорировать его изначально.
Я также предпочитаю использовать FINDSTR
вместо FIND
, потому что (в моем тестировании) я обнаружил, что это более быстрая команда, которая может иметь значение, если вы часто ее используете.FINDSTR /C:"Full Name"
можно легко заменить на FIND "Full Name"
, если вы предпочитаете.