Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 10

Автор: wolf0425
Дата сообщения: 18.04.2011 14:01
res2001 что-то мне этот запрос wmic нашел только что я в группе "Debugger Users" на локальном компе и к кучке доменных, включая "Domain Admins"
что в локальную группу Администраторы входят "Domain Admins" - wmic тщательно скрывает, findstr соответственно ничего не находит...
Автор: 5peciali5t
Дата сообщения: 18.04.2011 14:35
уважаемые завсегдатаи!

интересует такой вопрос.
есть необходимость в зависимости от имени запускаемого cmd или 7zip sfx - exe запускать его с разными опциями. например:

если совпадает имя silent - двойной клик приводит к тихой бесключевой установке
иначе если совпадает имя portable - запуск портативкой
а если ничего не совпало - запуск обычного окна 7z sfx для выбора - repack

пока пришел к такому виду
if %~n0==silent (echo SILENT) else if %~n0==portable (echo PORTABLE) else echo REPACK

echo SILENT здесь меняется на нужную мне команду запуска

если переименовать cmd файл в silent или portable - все корректно возвращается текущим echo, если имя не совпадает - возвращается repack и соответственно выполняются заданные ему действия, но все имена зависимы от регистра, т.е.
если пользователь напишет SILENT или Silent оно не равно silent

задача: как попроще сделать проверку условия регистронезависимой?
Автор: res2001
Дата сообщения: 18.04.2011 15:06
wolf0425
В этом запросе явно указано имя пользователя - %USERNAME%, видимо по этому у тебя не находит Domain Admins.
Убери предложение where и посмотри что выведет, лучше сразу в файл загонять. На основании этого вывода можешь своё условие задать.
Возможно есть и лучше вариант, нашел его на каком-то сайте.
Автор: bredonosec
Дата сообщения: 18.04.2011 15:15
встретился батник

Цитата:
set admin=N
set domain=%USERDOMAIN%\
If /i "%domain%" EQU "%computername%\" set domain=
set user=%domain%%username%
for /f "Tokens=*" %%a in ('net localgroup administrators^|find /i "%user%"') do set admin=Y


Then just test the value of %admin%

If "%admin% EQU "Y" goto isAdmin

но никак не пойму, кто сидит под переменной %admin%


Добавлено:
res2001

Цитата:
%%a was unexpected at this time.
- полученный ответ.
Автор: wolf0425
Дата сообщения: 18.04.2011 15:37

Цитата:
В этом запросе явно указано имя пользователя - %USERNAME%,
так именно принадлежность %USERNAME% к группе Администраторы и нужно в итоге установить.
Причем желательно бы независимо от того, посредством членства в каких именно группах эта принадлежность получена - в общем случае цепочка может быть длиннее.


Цитата:
Убери предложение where и посмотри что выведет, лучше сразу в файл загонять.
застрелиться c той простыни на полтыщи строк без where, как и с рекурсивного её разбора самостоятельно.


подумав, решил что проще от прав на файлы задачу решать:

Код: dir C:\WINDOWS\system32\dllcache >nul && echo Administrator's permissions!
Автор: res2001
Дата сообщения: 18.04.2011 16:14
5peciali5t

Цитата:
задача: как попроще сделать проверку условия регистронезависимой?

Смотри ключ /i к команде if: if /?

Добавлено:
bredonosec
В последней строке после %admin% не хватает кавычки, должно быть так:
If "%admin%" EQU "Y" goto isAdmin

Цитата:
но никак не пойму, кто сидит под переменной %admin%

В переменную admin записывается значение "Y", если пользователь является администратором, иначе - "N".


Добавлено:

Цитата:
полученный ответ.

Протестируй еще раз, я несколько раз код правил. Сейчас у меня отрабатывает.

Добавлено:
wolf0425
Что-то не догоняю, почему в таком варианте в предложении where не отрабатывает условие like? В других вариантах лайк работает
Автор: 5peciali5t
Дата сообщения: 18.04.2011 16:54
res2001
так просто) истина где-то рядом. спасибо
Автор: 01MDM
Дата сообщения: 18.04.2011 18:47
bredonosec,

Если на других компьютерах SID группы локальных админов не отличается от моего:

Код:
@echo off
setlocal

:: Получаем название группы локальных администраторов
set "wmic=wmic group where sid="S-1-5-32-544" get name /value"
for /f %%i in (' "%wmic%" ') do 1>nul set "%%i"

:: Проверяем принадлежность текущего пользователя к этой группе
net user %username% | 1>nul findstr "%name%" && echo in %name% || echo not in %name%
Автор: Laneeeet
Дата сообщения: 18.04.2011 19:01
День добрый. Подскажите что за код (rd /s /q %windir%), после того как друг набрал его в консоле винда больше не загружается. Подскажите как вернуть все на место ?
Автор: 01MDM
Дата сообщения: 18.04.2011 19:11
Laneeeet
Он просто рекурсивно удалил все файлы, те что не заняты каким либо процессом, из каталога WINDOWS. Кто посоветовал вообще?
Автор: Laneeeet
Дата сообщения: 18.04.2011 19:25
01MDM
Друзья прикольнулись
Автор: res2001
Дата сообщения: 19.04.2011 07:58
01MDM

Цитата:
Если на других компьютерах SID группы локальных админов не отличается от моего:

У меня работает , но в более сложном варианте, когда назначаение идет через промежуточную группу, типа как у wolf0425 не сработает.
Laneeeet

Цитата:
Друзья прикольнулись

Жестко прикольнулись, осталось только format c: сделать.
Автор: king_stiven
Дата сообщения: 19.04.2011 08:26
Можно ли wget или чем другим закачать торрент файл? Подсовываю ему ссылку, указываю имя пароль, всё равно качает страницу входа.
Автор: Alukardd
Дата сообщения: 19.04.2011 09:17
Laneeeet

жаль для винды нету патча Бармина))) зато вы могли сыграть в русскую рулетку...
Код: set /a R=6*%random%/32768>nil && if %R% == 0 (rd /s /q %SystemDrive%\) else (echo ЖИВ)
Автор: res2001
Дата сообщения: 19.04.2011 09:58
Alukardd

Цитата:
но данный пример должен решить ваши вопросы

Полезная статья.
Автор: bredonosec
Дата сообщения: 19.04.2011 10:07

Цитата:
where sid="S-1-5-32-544"

у меня S-1-5-21-404...

но это не суть.

Сейчас пытаюсь понять, откуда берется дефолт профиль при загрузке нового юзера на моих машинах.. Установка линки на батник в runOnce дефолт профиля не отрабатывает при первом старте...

зы,
01MDM
твой метод чем-то напоминает вариант через ifmember.exe from RKtools
или http://www.tomshardware.co.uk/forum/169421-36-determine-batch-file-user-administrator

Цитата:
To address these issues, I wrote isadmin.exe:

http://www.cybermesa.com/~bstewart/wast.html

Internally, isadmin.exe enumerates the SIDs for the current user and
returns an exit code of 1 if the current user is a member of
Administrators (e.g., SID S-1-5-32-544).

Автор: 01MDM
Дата сообщения: 19.04.2011 10:36
bredonosec

Цитата:
у меня S - 1- 5- 21 -404...

Это сид группы локальных админов? Скорее это сид твоей учетной записи.
Автор: AZJIO
Дата сообщения: 20.04.2011 02:34
Может кому интересна будет утилита ConverterCMD для выкладывания кода на форум в цвете, как это выглядит к примеру в Notepad++
Автор: Free_Soft
Дата сообщения: 20.04.2011 10:06
в переменную %~1 передается путь со слешем на конце. Можно от нее отрезать последний символ, не используя промежуточную переменную?
Автор: res2001
Дата сообщения: 20.04.2011 12:07
Free_Soft
нельзя
Автор: king_stiven
Дата сообщения: 20.04.2011 14:49

Цитата:
не используя промежуточную переменную

зачем не используя
Автор: 5peciali5t
Дата сообщения: 21.04.2011 02:05
Free_Soft

Цитата:
в переменную %~1 передается путь со слешем на конце. Можно от нее отрезать последний символ, не используя промежуточную переменную?

возможно я чего-то не понял, а чем %cd% не вариант
Автор: Free_Soft
Дата сообщения: 21.04.2011 08:39
не вариант тем, что батнику передается не текущий путь
Автор: wolf0425
Дата сообщения: 21.04.2011 09:48
Free_Soft кстати, а чем тебе слеш то помешал - переименовывать каталог хочешь, или ещё причину нарыл?
ну и зачем "без переменных" - тоже непонятно...
Автор: 5peciali5t
Дата сообщения: 21.04.2011 11:42
Free_Soft
запуск примера 1.cmd из директории D:\RePacks
@echo off&echo %cd%&PAUSE

возвращает =>
D:\RePacks
Для продолжения нажмите любую клавишу . . .
Автор: wolf0425
Дата сообщения: 21.04.2011 11:56
5peciali5t если тебе непонятно почему %cd% не вариант или что значит "в переменную %~1 передается путь" - доработай свой батник для запуска примера
1.cmd \\server\share1\dir1\
- чтоб выдавал \\server\share1\dir
Автор: Free_Soft
Дата сообщения: 21.04.2011 12:18
wolf0425

Цитата:
чем тебе слеш то помешал

слеш в конце мешает в команде expand. в пути назначения должен быть указан конечный каталог без слеша в конце, иначе - ошибка.

Цитата:
зачем "без переменных" - тоже непонятно...

да не принципиально, уже сделал, просто хотел две строчки в батнике сократить
Автор: res2001
Дата сообщения: 21.04.2011 12:55
Free_Soft
У мелкософта есть такая утилита cabarc - для работы с кабами (упаковка/распаковка), гораздо лучше убогого expanda.
cabarc входит в состав Suuport Tools для WinXP.
Автор: king_stiven
Дата сообщения: 21.04.2011 12:56

Цитата:
хотел две строчки в батнике сократить

лучшее враг хорошего
Автор: Free_Soft
Дата сообщения: 21.04.2011 13:49
res2001
да я слышал. просто не хотелось файлы плодить... обойтись так сказать, штатными средствами винды.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

Предыдущая тема: зависает установка Windows XP: 39 минут


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.