none
как в скрипте получить выводимое имя? RRS feed

  • Вопрос

  • в скрипте есть необходимость получить полное имя пользователя а не его имя входа (%username%)

    в свойствах пользователя это поле в русскрой редакции переведено как выводимое имя?

Ответы

  • Code Snippet

    wmic useraccount where (Name="%username%") get Name,FullName /value



    Если надо получить переменную, то слету у меня не получилось - в цикле wmic ведет себя неадекватно

    Code Snippet

    @echo off
    setlocal enabledelayedexpansion
    wmic useraccount where (Status="OK") get Name,FullName /value >users.txt

    for /f "tokens=*" %%i in ('more users.txt ^| findstr "^Name="') do (
        set /a cnt+=1
        call:setdata "%%i"
    )
    set cnt=
    for /f "tokens=*" %%i in ('more users.txt ^| findstr "FullName="') do (
        set /a cnt+=1
        call:setdata "%%i"
    )


    :: Здесь из массива переменных можно получить нужные значения

    for /f "tokens=2,3* delims==" %%i in ('set _User') do echo %%i: %%j: %%k
    del users.txt
    goto:eof

    :setdata
    set "_User%cnt%=!_User%cnt%! %~1"


Все ответы

  • Как раз %username% и есть реальное название аккаунта, а не то что написано на экране приветствия

    Code Snippet

    wmic useraccount where (status="OK") get Name,FullName /value


  • то что нужно

    а как поставить условие чтобы только для текужего пользователя?

    ---------------------------------------------

    все разобрался сам спс

  • Code Snippet

    wmic useraccount where (Name="%username%") get Name,FullName /value



    Если надо получить переменную, то слету у меня не получилось - в цикле wmic ведет себя неадекватно

    Code Snippet

    @echo off
    setlocal enabledelayedexpansion
    wmic useraccount where (Status="OK") get Name,FullName /value >users.txt

    for /f "tokens=*" %%i in ('more users.txt ^| findstr "^Name="') do (
        set /a cnt+=1
        call:setdata "%%i"
    )
    set cnt=
    for /f "tokens=*" %%i in ('more users.txt ^| findstr "FullName="') do (
        set /a cnt+=1
        call:setdata "%%i"
    )


    :: Здесь из массива переменных можно получить нужные значения

    for /f "tokens=2,3* delims==" %%i in ('set _User') do echo %%i: %%j: %%k
    del users.txt
    goto:eof

    :setdata
    set "_User%cnt%=!_User%cnt%! %~1"


  •  

    какими способави можно перенаправить результаты одной команды в другуюю?

    вот результат команды

    wmic useraccount where (Name="%username%") get Name,FullName /value

    передать в команду (%datauser%)

    net use * \\server\%datauser%

    -------------------------------------------------

    посоветуйте ресурсы или статейки по написанию bat.

     

     

  • > какими способави можно перенаправить результаты одной команды в другуюю?

    В общем случае есть оператор перенаправления "|", но когда надо получить именно вывод команды и его обработать, то через "for /f".

    Твою задачу не совсем понял, какой смысл городить wmic, когда можно просто подставить %username%?
    Если тебе все-таки нужно значение FullName, то попробуй такой вариант

    Code Snippet

    @echo ofа

    setlocal
    wmic useraccount where Name="%username%" get FullName /value >user.txt
    for /f "tokens=2 delims==" %%i in ('more user.txt') do (
        if not .%%i==. (net use * "\\server\%%i")
    )    

    del user.txt


    > посоветуйте ресурсы или статейки по написанию bat.

    По правилам форума нельзя давать  ссылки  на  другие  ресурсы,  поищи  в  гугл  "задачи на bat файлах"