Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - синтаксис bat -ника

Ответить
Настройки темы
CMD/BAT - синтаксис bat -ника

Ветеран


Сообщения: 2821
Благодарности: 253

Профиль | Отправить PM | Цитировать


собственно вопрос в синтаксисе - если в цикле "если, то" команда со свитчами, надо-ли её как-то выделять? Кавычками там или скобками, чтоб исполняющий софт не понял, что команда уже закончена и надо ожидать ELSE
гугление ответа не даёт, а сам что-то склерожу совершенно жестоко.

Если привязаться к конкретно скрипту, то сейчас рисую такое - (даётся лист машин с проблемами всуса, на них останавливается служба винапдейта и в зависимости от версии выни тихо и с последующим принудительным рестартом устанавливается обновление клиента винапдейта для вин 8 или 7. )
Код: Выделить весь код
set DomainUserUPN=(мойдомен)\(админскийакк)
set /P DomainUserPassword=password...
set FLOG=%~n0.log
set FLIST=ADlist.txt
set w7up=Windows6.1-KB3172605-x86(WU_update).msu
set w8up=Windows8.1-KB3172614-x86(WU_update).msu
if exist %FLOG% set FLIST=%FLOG%
for /f "tokens=*" %%i in (%FLIST%) do call :updWU %%i
goto RETURN

:updWU
for %%k in ( bits,wuauserv,appidsvc,cryptsvc ) do ( psexec \\%1 -u %DomainUserUPN% - p %DomainUserPassword% net stop %%k )
для локальной машины это было бы в одну строку (только неясно, отделять ли команду со свитчами чем-то
Код: Выделить весь код
if /f "skip=4 delims=" %%G in ('systeminfo | findstr /B /C:"OS Name" /C:"OS Version"') EQU 7 start %w7up% /quiet /forcerestart else start %w8up% /quiet /forcerestart
или вроде того, а для удаленной - вероятно, что--то вроде
Код: Выделить весь код
if /f "skip=4 delims=" %%G in ('psinfo \\%1 -u %DomainUserUPN% - p %DomainUserPassword% kernel') EQU 7 start %w7up% /quiet /forcerestart else start %w8up% /quiet /forcerestart
и переменная должна уже тоже включать psexec с параметрами...
Можно, конечно, выделить в goto, но неужели нет изящного в одну строку решения?


это не единственная проблема, вопросы к синтаксису будут регулярно, наверно, возникать))

Отправлено: 17:31, 22-12-2016

 

Ветеран


Сообщения: 2205
Благодарности: 730

Профиль | Отправить PM | Цитировать


Цитата bredych:
if /f »

Отправлено: 17:42, 22-12-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off
for /f "tokens=3" %%a in ('wmic path Win32_OperatingSystem get Caption /value^|find "="') do if %%a==7 (echo win 7) else if %%a==8 (echo win 8)
pause

Отправлено: 19:53, 22-12-2016 | #3


Ветеран


Сообщения: 2821
Благодарности: 253

Профиль | Отправить PM | Цитировать


alpap, мне для удалённой машины... Точнее машин. Не локальной.

-------
Оснащение дурдомов компьютерами идёт полным ходом.
Об этом можно судить по комментариям в интернете.


Отправлено: 09:42, 23-12-2016 | #4


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
SET Node=%ComputerName%
WMIC.EXE /Node:"%Node%" Path
и в for после do ставите свой psexec в нужном месте условия и "удаляете" все что надо, вот только мне кажется что проблема у вас немного в другом
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:13, 23-12-2016 | #5


Ветеран


Сообщения: 2821
Благодарности: 253

Профиль | Отправить PM | Цитировать


о, не знал, что она с сетью умеет, спасибо

хм.. попробовал..
Код: Выделить весь код
:updWU
for %%k in ( bits,wuauserv,appidsvc,cryptsvc ) do ( psexec \\%1 -u %DomainUserUPN% -p %DomainUserPassword% net stop %%k )
 
for /f "tokens=3" %%a in ('wmic /node:%1 path Win32_OperatingSystem get Caption /value^|find "="') do if %%a==7 goto w7 else if %%a==8 goto w8
pause

:w7
psexec \\%1 -u %DomainUserUPN% -p %DomainUserPassword% -i -d -c D:\Install\SysTools\%w7up% /quiet /forcerestart
goto returm

:w8
psexec \\%1 -u %DomainUserUPN% -p %DomainUserPassword% -i -d -c D:\Install\SysTools\%w8up% /quiet /forcerestart
goto return

:return
- смотрю исполнение -

Код: Выделить весь код
>for /F "tokens=3" %a in ('wmic /node:(имякомпа) path Win32_Operat
ingSystem get Caption /value|find "="') do if %a == 7 goto w7 else if %a==8 goto
 w8
Invalid Global Switch.
Вы об этом? Или еще где-то накосячено?

-------
Оснащение дурдомов компьютерами идёт полным ходом.
Об этом можно судить по комментариям в интернете.


Отправлено: 15:51, 23-12-2016 | #6


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


тогда уже аккуратнее так (вы все скобки растеряли):
Код: Выделить весь код
...
for /f "tokens=3" %%a in ('wmic /node:%1 path Win32_OperatingSystem get Caption /value^|find "="') do (
 if %%a==7 set "up=Windows6.1-KB3172605-x86(WU_update).msu"
 if %%a==8 set "up=Windows8.1-KB3172614-x86(WU_update).msu"
)
psexec \\%1 -u %DomainUserUPN% -p %DomainUserPassword% -i -d -c D:\Install\SysTools\%up% /quiet /forcerestart
...

Отправлено: 16:20, 23-12-2016 | #7


Ветеран


Сообщения: 2821
Благодарности: 253

Профиль | Отправить PM | Цитировать


хм.. да, спасибо, так аккуратнее, но всё равно invalid global switch.
Где-то косяк в синтаксисе, но какой, не пойму..

-------
Оснащение дурдомов компьютерами идёт полным ходом.
Об этом можно судить по комментариям в интернете.


Отправлено: 10:43, 27-12-2016 | #8


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


bredych, попробуйте ещё:
Код: Выделить весь код
wmic.exe /node:"%~1" path …

Отправлено: 11:34, 27-12-2016 | #9


Ветеран


Сообщения: 2821
Благодарности: 253

Профиль | Отправить PM | Цитировать


но это же не имеет смысла
Переменная объявлялась как %1 или %i
или я чего-то не знаю и такая запись равноценна первой?

попробовал сменить на %%i - получил

ERROR:
Description = The RPC server is unavailable.

попробовал от безысходности на ваше сменить - идентичный ответ.

-------
Оснащение дурдомов компьютерами идёт полным ходом.
Об этом можно судить по комментариям в интернете.


Отправлено: 17:46, 27-12-2016 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - синтаксис bat -ника

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] CMD/BAT - С помощью bat-ника найти и удалить текст в файле InVariable Скриптовые языки администрирования Windows 4 22-05-2015 20:06
CMD/BAT - Как выполнить команду с BAT-ника? MOWGLY1 Скриптовые языки администрирования Windows 3 29-07-2014 14:45
CMD/BAT - Поиск с помощью Bat ника shiroq Скриптовые языки администрирования Windows 11 10-10-2013 07:47
CMD/BAT - С помощью bat-ника заблокировать сайт DarkSmail Скриптовые языки администрирования Windows 2 07-05-2013 16:11
CMD/BAT - [решено] Странности в работе bat-ника Nun-Nun Скриптовые языки администрирования Windows 2 26-09-2010 09:41




 
Переход