|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - сравнение данных и вывод в переменную |
|
CMD/BAT - сравнение данных и вывод в переменную
|
Пользователь Сообщения: 102 |
Добрый день!
появилась ещё одна задачка, часть которой я не знаю как решить, практически молю о помощи ![]() необходимый фрагмент: есть список с логинами пользователей, построчный, формат логина - PetrovAV необходимо: что бы батник взял %username% и отрезать ему первый символ (APetrov), далее взял логин из списка и отрезал 2 последних символа, сравнил их и в случае совпадения, взял в переменную логин из списка (перебирать должен до совпадения или до конца списка) и есть одно "но", есть несколько пользователей у которых %userprofile% не связан с фамилией, например (GBUH), а логин SemenovaAS, эти соответствия должны быть жестко прописаны и проверены в первую очередь. |
|
Отправлено: 14:23, 10-06-2015 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать А какую часть непонятно как решать?
В начале фигачим сопоставление например так* Дальше перебираем имеющийся файл for /F "delims=" %%a (username_list.txt) do ( if /i %username:~1% eql %a:~0,-2% ( set i=%a:~0,-2% echo %%i ) ) *Если таких пользователей немного проще написать несколько IF'ов в самом батнике, если много - лучше сделать через еще один файл где все это будет сопоставлено, соответственно будет выглядеть несколько сложнее |
Отправлено: 17:44, 10-06-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать фрагмент не понятный я и выписал
![]() согласен, тоже подумал, что удобней будет сделать второй файл, но пользователей штук 5 таких, так что можно и в батнике оставить. p.s. плохо не знать, а ещё и забыть... 1 часть, странно, но почему то говорит "Непредвиденное появление: eql", помогла замена на "==", ну и переменная %%i не подходит, должна быть %i% заметно, что домой собирались ![]() 2 часть, наверно правильней было бы так: Скрытый текст
но 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. как раз на вот этой части у меня сегодня и произошел затык |
Последний раз редактировалось Anufriev, 10-06-2015 в 20:54. Отправлено: 19:36, 10-06-2015 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Anufriev:
Цитата Anufriev:
|
||
Отправлено: 20:59, 10-06-2015 | #4 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать во, в таком виде заработало
Скрытый текст
Цитата Iska:
Цитата Iska:
![]() p.s. что-то «equ» вообще в справочнике не нашел, но реально работает ![]() |
|||
Последний раз редактировалось Anufriev, 10-06-2015 в 21:26. Отправлено: 21:15, 10-06-2015 | #5 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать я глупец, если в список добавить несколько пользователей, то получается так, что он в любом случае берет последнего из списка...
Скрытый текст
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 ) вот вид батника: |
Отправлено: 22:00, 10-06-2015 | #6 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать Уважаемы Iska, помогите, пожалуйста, я потерялся... я просто тупо сижу смотрю и не представляю, что можно сделать...
|
Отправлено: 22:59, 10-06-2015 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Anufriev:
Цитата:
Цитата Anufriev:
|
|||
Отправлено: 23:07, 10-06-2015 | #8 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать Список логинов прикрепил
ситуация какая, доменные учетные записи выглядят в таком виде "TPetrov, SSokolov, EMironov", а учетная запись другого домена как в файле нужно подключить каждому пользователю сетевой диск из другого домена под его учеткой другого домена, в моем понимании решение проблемы, это оставить фамилию учеток обоих доменов и их сравнить, в случае совпадения взять учетную запись из списка, и под ней подключить сетевой диск |
Отправлено: 23:25, 10-06-2015 | #9 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать прошу прощение, за вчерашнюю панику
![]() если использовать батник в таком виде, он работает прекрасно, но не подходит моему списку, нужно у переменной %%a обрезать два последних символа, как это сделать не понимаю? Скрытый текст
если же я использую %a:~0,-2% вместо %%a Скрытый текст
то получаю Непредвиденное появление: else. Скрытый текст
D:\testbat\test>netuse.bat
Непредвиденное появление: else. D:\testbat\test> ) else echo net |
Последний раз редактировалось Anufriev, 11-06-2015 в 13:51. Отправлено: 11:02, 11-06-2015 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Система - Вывод даты в переменную (bat) | rootheaven | Скриптовые языки администрирования Windows | 6 | 23-07-2017 20:21 | |
CMD/BAT - Как в .bat файле сделать вывод результата выполнения в переменную?? | Eugene Shugaev | Скриптовые языки администрирования Windows | 1 | 12-03-2014 13:39 | |
CMD/BAT - [решено] Сравнение txt файлов и вывод результата | LAKERS824 | Скриптовые языки администрирования Windows | 2 | 08-07-2012 12:48 | |
CMD/BAT - [решено] Ввод данных в переменную из txt-файла | river123 | Скриптовые языки администрирования Windows | 1 | 10-01-2011 18:43 | |
MSFT SQL Server - ошибка типа данных (tinyint и text) при записи содержимого поля в переменную | Vi-P | Программирование и базы данных | 14 | 11-12-2008 01:14 |
|