rmvl
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Господа, просвятите, плз. Задача - получение информации о членстве текущего пользователя в группах, и выполнение скриптов, расположенных в каталогах с именами, совпадающими с именами групп. Написал такой скрипт -------------------------- @echo off setlocal enabledelayedexpansion set user=%username% set scripts=. for /F "usebackq tokens=2 delims=*" %%i IN (`net user %user% /domain`) do ( echo "%%i" IF EXIST "%scripts%\%%i" ( for %%f in ("%scripts%\%%i\*.bat" "%scripts%\%%i\*.cmd") do ( call "%%f" ) ) ) -------------------------- Но есть одно но: долбаная net user использует форматированный вывод, и имена групп либо обрезаются, либо дополняются пробелами до фиксированной длины. Т.е. получаем результат: -------------------------- D:\bin\logon>init.bat "Administrators " "AdmExtAccess " "Администраторы предпр" "Пользователи домена " "Администраторы домена" "Adm " "Администраторы схемы " -------------------------- Не так страшно (в моем случае), что обрезаются длинные имена, как наличие пробелов в конце коротких. Смотрел set /?, нашел т.н. строки расширения. Например echo "%var:~0,-1%" печатает переменную var без последнего символа. Но, понятно - это не совсем то. А есть ли возможность тупо отрезать все пробелы в конце переменной? Или, как вариант, получить неформатированную информацию, без пробелов изначально? Заранее спасибо. Добавлено: Извиняюсь, плохо искал. А может, просто не то. Одним словом этот скрипт делает то, что мне надо. @echo off setlocal enabledelayedexpansion set domain1=domain set domain2=local set user=%username% set scripts=\\server\netlogon for /F "usebackq tokens=2 delims==," %%i IN (`dsget user "cn=%user%,CN=Users,DC=%domain1%,dc=%domain2%" -memberof`) do ( echo "%%i" IF EXIST "%scripts%\%%i" ( for %%f in ("%scripts%\%%i\*.bat" "%scripts%\%%i\*.cmd") do ( call "%%f" ) ) ) |