Страница 1 из 2
Вопрос по логин скрипту - сравнение строк

Добавлено:
10 ноя 2008, 14:25
Андрей Тр. aka RH
Появилась необходимость на некоторых компьютерах проделать некое действие, некоторых - это на компах определённой модели. Выполнить желаемое хочется из новелловского логин скрипта. Каждый из компов в своем имени содержит инициалы пользователя и эту самую модель - например, AA-IBM.
Вопрос в том, есть ли способ в логин скрипте выполнить сравнение типа IF переменная=*-IBM
Значение переменной получаем через REGREAD, непосредственно из реестра, так что это не проблема. Проблема в том, что в имени искомая строка ( IBM ) дополняется переменной ( инициалами ). Выносить всё это дело в батник и т.п. неохота, так как батник потом будет выполняться на каждом компе при каждом логине.

Добавлено:
10 ноя 2008, 15:10
Влад А.Сокол aka Akina
А почему не написАть VBS/JS, который выполнит требуемые операции по преобразованию и либо вернет код ошибки, либо установит переменную среды окружения?

Добавлено:
10 ноя 2008, 15:44
Андрей Тр. aka RH
Написать, конечно, можно. Но я для начала хочу уточнить, что требуемое нельзя выполнить средствами самого логин скрипта. Из реестра читать уже можно, прямо в переменную - осталось только её проверить. Если с * не получится, то можно ещё попробовать подыскать что-нить в реестре уникальное для данной модели ( к тому же это ноуты ) - типа драйвера там и т.п.
К тому же, если честно, то не люблю я VBS .. у меня есть один клиент, где в чисто вендозной сети примерно половина её автоматизирована за счёт как раз таких скриптов. Типа раздачи принтеров, ограничения числа логинов и пр. Я уж лучше батником как-нить ..

Добавлено:
10 ноя 2008, 16:32
Влад А.Сокол aka Akina
Андрей Тр. aka RH писал(а):я для начала хочу уточнить, что требуемое нельзя выполнить средствами самого логин скрипта.
Чисто теоретически - надо попробовать
- Код: Выделить всё
#cmd /c SET tempvat=%somevar:~-4%
IF %tempvar == "-IBM" THEN
; Perform something
ELSE
; Perform something else
END
Понятно, что somevar - имя то самой переменной, а tempvar - имя врЕменной переменной, которую мы используем для вычислений. Желательно, чтобы таковой не существовало, а то изгадится безвозвратно на всё время выполнения скрипта.
До окончания загрузки tempvar, есссно, не доживёт... и окно CMD по-любому мелькнёт.

Добавлено:
10 ноя 2008, 16:57
Андрей Тр. aka RH
Влад А.Сокол aka Akina писал(а):[code]#cmd /c SET tempvat=%somevar:~-4%
Ok, попробуем .. а что именно такое вот это вот %somevar:~-4% ?

Добавлено:
10 ноя 2008, 16:58
Сулейменов Олжас
может задействовать внешний bat-ник, который и обработает все нужные переменные? Пройдет ли фокус с маской - не знаю, не пробовал...

Добавлено:
10 ноя 2008, 17:04
Влад А.Сокол aka Akina
Андрей Тр. aka RH писал(а):а что именно такое вот это вот %somevar:~-4% ?
- Код: Выделить всё
Пуск - Выполнить - CMD<Enter>
SET /?<Enter>

Добавлено:
10 ноя 2008, 17:04
Влад А.Сокол aka Akina
Сулейменов Олжас писал(а):Пройдет ли фокус с маской - не знаю, не пробовал...
Только что пробовал - проходит.

Добавлено:
10 ноя 2008, 18:52
Музалёв Николай
такое вот это вот %somevar:~-4% ?
Предполагается, что это копирование по количеству.
Т.е. в перем tmpvar попадают только 4ре правых символа от пременной somevar.

Добавлено:
11 ноя 2008, 02:53
Андрей Тр. aka RH
Музалёв Николай писал(а):такое вот это вот %somevar:~-4% ?
Предполагается, что это копирование по количеству.
Т.е. в перем tmpvar попадают только 4ре правых символа от пременной somevar.
Ага .. об это как раз и пишут в
- Код: Выделить всё
Пуск - Выполнить - CMD<Enter>
SET /?<Enter>
А вот еще вроде бы все же была какая-то хитрость с предотвращением открытия ДОС окна при старте из логин скрипта, или что оно стартовало свернутым .. хотя это как раз меня не сильно волнует.

Добавлено:
11 ноя 2008, 07:31
VIP_
[quote]А вот еще вроде бы все же была какая-то хитрость с предотвращением открытия ДОС окна при старте из логин скрипта, или что оно стартовало свернутым .. хотя это как раз меня не сильно волнует.[/quote]
Я запускаю батники скрыто не в Win98 с помощью такой утилиты:
runcmd install.bat HIDDEN NOWAIT QUIET

Добавлено:
11 ноя 2008, 14:24
Константин Ошмян
Влад А.Сокол aka Akina писал(а):Чисто теоретически - надо попробовать
- Код: Выделить всё
#cmd /c SET tempvar=%somevar:~-4%
[...]
[...]
До окончания загрузки tempvar, есссно, не доживёт... и окно CMD по-любому мелькнёт.
Боюсь, что tempvar "не доживёт" ещё раньше: ведь она будет жить только в рамках отдельного внешнего процесса
cmd.exe (запущенного через "
#") и уже завершившегося к моменту возврата управления в логин-скрипт.


Добавлено:
11 ноя 2008, 15:30
Музалёв Николай
runcmd install.bat HIDDEN NOWAIT QUIET
Вин 2000 ру.
Не находит такого файла.
Недоставлено чего-то или в 2000 еще нет такой утилитки?[/b]

Добавлено:
11 ноя 2008, 15:36
Влад А.Сокол aka Akina
Музалёв Николай писал(а):runcmd install.bat HIDDEN NOWAIT QUIET
Вин 2000 ру.
Не находит такого файла.
Недоставлено чего-то или в 2000 еще нет такой утилитки?[/b]
http://www.novell.com/coolsolutions/tools/19837.html

Добавлено:
11 ноя 2008, 16:15
Музалёв Николай
Влад, спасибо.