![]() |
сравнение данных и вывод в переменную
Добрый день!
появилась ещё одна задачка, часть которой я не знаю как решить, практически молю о помощи:) необходимый фрагмент: есть список с логинами пользователей, построчный, формат логина - PetrovAV необходимо: что бы батник взял %username% и отрезать ему первый символ (APetrov), далее взял логин из списка и отрезал 2 последних символа, сравнил их и в случае совпадения, взял в переменную логин из списка (перебирать должен до совпадения или до конца списка) и есть одно "но", есть несколько пользователей у которых %userprofile% не связан с фамилией, например (GBUH), а логин SemenovaAS, эти соответствия должны быть жестко прописаны и проверены в первую очередь. |
А какую часть непонятно как решать?
В начале фигачим сопоставление например так* Код:
if /i %username% eql GBUH ( Код:
for /F "delims=" %%a (username_list.txt) do ( *Если таких пользователей немного проще написать несколько IF'ов в самом батнике, если много - лучше сделать через еще один файл где все это будет сопоставлено, соответственно будет выглядеть несколько сложнее |
фрагмент не понятный я и выписал:) так что всё что тут описано, я и не могу сообразить как сделать, ну кроме как прочитать список
согласен, тоже подумал, что удобней будет сделать второй файл, но пользователей штук 5 таких, так что можно и в батнике оставить. p.s. плохо не знать, а ещё и забыть... 1 часть, странно, но почему то говорит "Непредвиденное появление: eql", помогла замена на "==", ну и переменная %%i не подходит, должна быть %i% заметно, что домой собирались:), вдвойне благодарю, что уделили мне время 2 часть, наверно правильней было бы так: Скрытый текст
Код:
for /f "usebackq delims=" %%a in ("C:\Users\user\Desktop\folder\user.list") do ( но cmd выдает такое, как будто переменную не берет из файла... Скрытый текст
C:\Users\user\Desktop\folder>for /F "usebackq delims=" %a in ("C:\Users\user\Desktop\folder\user.list") do (
if /I ser == ~0 -2 ( set i=~0,-2 echo ~0,-2 ) C:\Users\user\Desktop\folder>( if /I ser == ~0 -2 ( set i=~0,-2 echo ~0,-2 ) ~0,-2 но если заменить "%a:~0,-2%" на %%a он видит текст из файла, нужно понять, почему он не пилит переменную из списка:( p.s.s. как раз на вот этой части у меня сегодня и произошел затык |
Цитата:
Цитата:
|
во, в таком виде заработало
Скрытый текст
Код:
for /f "usebackq delims=" %%a in ("C:\Users\user\Desktop\folder\user.list") do ( Цитата:
Цитата:
p.s. что-то «equ» вообще в справочнике не нашел, но реально работает:) интересно, а мелкософт об этом знает? |
я глупец, если в список добавить несколько пользователей, то получается так, что он в любом случае берет последнего из списка...
Скрытый текст
C:\Users\user\Desktop\folder>for /F "usebackq delims=" %a in ("C:\Users\user\Desktop\folder\user.list") do (
set u=%a if /I ser == FEcd (echo FEcdlk ) ) C:\Users\user\Desktop\folder>( set u=Pfdas if /I ser == FEcd (echo FEcdlk ) ) C:\Users\user\Desktop\folder>( set u=DFFff if /I ser == FEcd (echo FEcdlk ) ) C:\Users\user\Desktop\folder>( set u=serTA if /I ser == FEcd (echo FEcdlk ) ) C:\Users\user\Desktop\folder>( set u=FEcdlk if /I ser == FEcd (echo FEcdlk ) вот вид батника: Скрытый текст
Код:
for /f "usebackq delims=" %%a in ("C:\Users\user\Desktop\folder\user.list") do ( |
Уважаемы Iska, помогите, пожалуйста, я потерялся... я просто тупо сижу смотрю и не представляю, что можно сделать...
|
Цитата:
Код:
if /? Цитата:
Цитата:
|
Вложений: 1
Список логинов прикрепил
ситуация какая, доменные учетные записи выглядят в таком виде "TPetrov, SSokolov, EMironov", а учетная запись другого домена как в файле нужно подключить каждому пользователю сетевой диск из другого домена под его учеткой другого домена, в моем понимании решение проблемы, это оставить фамилию учеток обоих доменов и их сравнить, в случае совпадения взять учетную запись из списка, и под ней подключить сетевой диск |
прошу прощение, за вчерашнюю панику:)
если использовать батник в таком виде, он работает прекрасно, но не подходит моему списку, нужно у переменной %%a обрезать два последних символа, как это сделать не понимаю? Скрытый текст
Код:
for /F "delims=" %%a in (d:\testbat\test\user.list) do ( если же я использую %a:~0,-2% вместо %%a Скрытый текст
Код:
for /F "delims=" %%a in (d:\testbat\CFT\user.list) do ( то получаю Непредвиденное появление: else. Скрытый текст
D:\testbat\test>netuse.bat
Непредвиденное появление: else. D:\testbat\test> ) else echo net |
Время: 00:27. |
Время: 00:27.
© OSzone.net 2001-