[Цитировать]

    PresserF
  • 31660
  • Стаж: 1 год 11 месяцев
  • Сообщений: 4
  • Репутация:0

    [+] [-]
JuraAD, попробовал добавить к пакетному файлу команду, не помогло: окно запускается, а вот выполнение :abc нет.
@echo off
chcp 866
set title=Update Switcher
:start
cls
ECHO %Title%
ECHO.
ECHO 1. Вкл./откл. обновления
ECHO.
ECHO 2. Вернуться в меню
ECHO.
ECHO 3. Выход
ECHO.
set /p choice=Choose an option for function:
if '%choice%'=='' ECHO "%choice%" is incorrect. Try again.
if '%choice%'=='1' goto 1
if '%choice%'=='2' goto cde
if '%choice%'=='3' goto end
goto start
:1
start "uso" cmd /b & call :abc
exit /b !ERRORLEVEL!
:abc
@echo off
title Автоматическое обновление Windows
>nul 2>&1 dism.exe|| (
echo/
echo  Ошибка! Требуются права Администратора.
echo/
pause
exit
)
if defined PROCESSOR_ARCHITEW6432 (
start %windir%\Sysnative\cmd.exe /c %0
exit
)
cls
echo/
set TrustedInstaller=*S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464
set var=%windir%\System32\wuaueng.dll
icacls.exe %var%| >nul find "BUILTIN"|| goto next
call :status РАЗРЕШЕНО 0a
call :msg "Запретить автоматическое обновления Windows?"&& (
cls
echo/
echo Запрещаю автоматическое обновление...
echo ──────────────────────────────────────────────────────────────
2>nul net stop wuauserv
takeown.exe /f %var% /a
icacls.exe %var% /reset
icacls.exe %var% /inheritance:r
echo ──────────────────────────────────────────────────────────────
echo Готово.
call :status ЗАПРЕЩЕНО 0c
pause
)
exit
:next
set donor=%windir%\System32\ntdll.dll
for %%i in (%var%) do set fname=%%~nxi
call :status ЗАПРЕЩЕНО 0c
call :msg "Разрешить автоматическое обновление Windows?"&& (
cls
echo/
echo Разрешаю автоматическое обновление...
echo ──────────────────────────────────────────────────────────────
echo f| >nul xcopy /oxy %donor% %tmp%\%fname%
pushd %tmp%
>nul icacls.exe %fname% /save %fname%.acl
popd
icacls.exe %var% /reset
icacls.exe %var% /setowner %TrustedInstaller%
icacls.exe %windir%\System32 /restore %tmp%\%fname%.acl
del /q %tmp%\%fname%*
echo ──────────────────────────────────────────────────────────────
echo Готово.
call :status РАЗРЕШЕНО 0a
pause
)
exit
:status
color %2
echo/
echo ──────────────────────────────────────────────────────────────
echo        Статус автоматического обновления: * %1 *
echo ──────────────────────────────────────────────────────────────
echo/
exit /b
:msg
set ask=& set /p "ask=%~1 [1=Да/0=Нет]:"
if "%ask%" neq "1" exit /b 1
:msg
for /f "delims=" %%y in ('cscript.exe //nologo //e:jscript %self% %1 %2 %3') do exit /b %%y
WScript.Echo (WScript.CreateObject("WScript.Shell").Popup(WScript.Arguments(0), 0, WScript.Arguments(1), WScript.Arguments(2)))
cls
ECHO abc

[Цитировать]

    JuraAD
  • 28398
  • Стаж: 3 года 5 месяцев
  • Сообщений: 86
  • Репутация:27

    [+] [-]
PresserF, Как оно вызовет :abc , если выполняется в отдельном процессе? (она не увидит эту метку в принципе)
Напиши функцию в отдельном файле и вызови - если сильно нужно... -)
Кроме того, чтоб анализировать код возврата, нужно дождаться завершения процесса (ключик - wait), так ты его запустил параллельно к основному... (exit /b !ERRORLEVEL!)
Есть вариант вызова одного CMD с разными функциями - в начале смд написать выбор (конвеер) функций

[Цитировать]

    PresserF
  • 31660
  • Стаж: 1 год 11 месяцев
  • Сообщений: 4
  • Репутация:0

    [+] [-]
JuraAD, все сделать в одном пакетном батнике не получится? Извините, только учусь писать скрипты. Про команду start, это из глубин инета взято, только оно не работает вовсе. Идея объединить куча батников в один пакетный.

[Цитировать]

    JuraAD
  • 28398
  • Стаж: 3 года 5 месяцев
  • Сообщений: 86
  • Репутация:27

    [+] [-]
Примеры для теста кода возврата:
start "test" /wait cmd /c exit /b 0& if errorlevel 1 echo not 0
start "test" /wait cmd /c exit /b 1& if errorlevel 1 echo not 0
Если пример не понятен, напиши...
"test" - заголовок
/wait - ждать завершения
cmd /c - выполнить и завершить независимо от ошибок (/k - если встретятся ошибки, консоль останется активной)
потестируй разницу и прочувствуй:
start "test" /wait cmd /c 12334exit /b 1& if errorlevel 1 echo not 0
start "test" /wait cmd /k 12334exit /b 1& if errorlevel 1 echo not 0
exit /b 0 - завершить с кодом возврата (без ключика /b по-разному работает, в нашем случае не видно)
if errorlevel 1 echo not 0 - анализ кода возврата (если ниже 1 = false - не выводит сообщение)
зы: работы много, сил нет разбирать пример, позже...
зызы: все можно сделать в одном файле, зависит от методов и алгоритмов...

[Цитировать]

    PresserF
  • 31660
  • Стаж: 1 год 11 месяцев
  • Сообщений: 4
  • Репутация:0

    [+] [-]
JuraAD, попробовал, в первом случае start "test" /wait cmd /c 12334exit /b 1& if errorlevel 1 echo not 0, окно открывается и сразу закрывается, а во втором - окно открыто постоянно. Только вот не задача, если добавить строчку в пакетный файл, окно открывается и сценарий выполняется с начальной страницы, а при переходе в предыдущее окно выводится сообщении о продолжении сценария, и, вне зависимости от выбора окно закрывается.

[Цитировать]

    JuraAD
  • 28398
  • Стаж: 3 года 5 месяцев
  • Сообщений: 86
  • Репутация:27

    [+] [-]
Конвеер функций - пример "menu.cmd"
@echo off
if /i "%~1" neq ":.menu" (
if /i "%~1" neq ":.menu1" (
if /i "%~1" neq ":.menu2" (
start "menu" cmd /s /k ""%0" :.menu"
exit /b 0
)))
goto %~1
:.menu
echo menu
exit /b 0
:.menu1
echo menu1
exit /b 1
:.menu2
echo menu2
exit /b 2
если просто запустить или с неизвестным параметром (отличным от: ":.menu" ":.menu1" ":.menu2" - регистр не важен) запуститься функция ":.menu" в новом окне...
если:
menu.cmd :.MENU
menu.cmd :.MENU1
menu.cmd :.MENU2
- будет вызвана соответствующая функция...
Самое главное - запускается один скрипт и все описанные функции доступны...
ps: start "menu" cmd /s /k ""%0" :.menu" - ключик /k чёб видно было, что творится...
зызы: почитать справку
if /?
cmd /?
call /?
start /?
exit /?

[Цитировать]

    dimo70
  • 17296
  • Стаж: 7 лет
  • Сообщений: 3785
  • Репутация:27

    [+] [-]
  • Откуда: BG
Всем привет, кто нибудь знает батник для автоматического импорта несколько строк в host файл?

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    bighead
  • 29484
  • Стаж: 3 года 1 месяц
  • Сообщений: 399
  • Репутация:24

    [+] [-]
dimo70,
@set @x=0; /*
@echo off
ver |>NUL find /v "5." && if "%~1"=="" cscript.exe //nologo //e:jscript "%~f0"& exit /b
Color 1A
cd c:\windows\system32\drivers\etc
echo yandex.ru 127.0.0.1 >> hosts
echo google.ru 127.0.0.1 >> hosts
echo mail.ru 127.0.0.1 >> hosts
:: Эту строку не трогать. Ниже ничего не писать!!!
*/new ActiveXObject('Shell.Application').ShellExecute (WScript.ScriptFullName,'Admin','','runas',1);

[Цитировать]

    dimo70
  • 17296
  • Стаж: 7 лет
  • Сообщений: 3785
  • Репутация:27

    [+] [-]
  • Откуда: BG
bighead, aa

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    rezorustavi
  • 2337
  • Стаж: 8 лет 11 месяцев
  • Сообщений: 918
  • Репутация:55

    [+] [-]
  • Откуда: Грузия, город Рустави
99482dimo70,
Приветствую. aa
А то, что Hosts по умолчанию имеет атрибуты только чтение?
Снятие атрибута только чтение:
attrib -h -r -s "%SystemRoot%\System32\drivers\etc\hosts"
Установка:
attrib +r "%SystemRoot%\system32\drivers\etc\hosts"

[Цитировать]

    wadimus
  • 14910
  • Стаж: 8 лет 1 месяц
  • Сообщений: 749
  • Репутация:91

    [+] [-]
99482@set @x=0; /*
прелесТно, батник и JS скрипт, комбо .. это aa
dimo70, помнится у нашего не менее прелесТного комбо-станочного цербера был уже батник по добавлению чего-то куда-то и, даже в этой теме
ЗЫ. пора выходить из тени, рыжыма РО ah
Добавлено через 4 минуты 14 секунд:
rezorustavi, не акцентируй на недочёты ..
bighead дал концепт!
между
@set @x=0; /*
и
*/
ты можеть батничать всё, что хочешь

[Цитировать]

    bighead
  • 29484
  • Стаж: 3 года 1 месяц
  • Сообщений: 399
  • Репутация:24

    [+] [-]
wadimus, это для запуска от админа, я как-то привык этот код добавлять, когда требуется что-то запустить от администатора, но не щёлкать лишний раз правой кнопкой мыши. Варианты как можно это осуществить и тут на форуме было обсуждение.
rezorustavi, не сталкивался с этим, но если нужно добавить недолго в код.

[Цитировать]

    UserX
  • 667
  • Стаж: 9 лет 8 месяцев
  • Сообщений: 860
  • Репутация:37

    [+] [-]
99487ЗЫ. пора выходить из тени, рыжыма РО
"Мы - вольные птицы; пора, брат, пора!" (с) ab

[Цитировать]

    dimo70
  • 17296
  • Стаж: 7 лет
  • Сообщений: 3785
  • Репутация:27

    [+] [-]
  • Откуда: BG
Вот беда: сообщение появилось -
C:\Users\Admin\AppData\Local\Temp\WebDrive\Host_File_Patch.bat(1, 6) Microsoft JScript compilation error: Conditional compilation is turned off
Скорее вот этот вариант сработал:
@echo off
ver |>NUL find /v "5." && if "%~1"=="" (
Echo CreateObject^("Shell.Application"^).ShellExecute WScript.Arguments^(0^),"1","","runas",1 >"%~dp0Elevating.vbs"
cscript.exe //nologo "%~dp0Elevating.vbs" "%~f0"& goto :eof
)
::
cd c:\windows\system32\drivers\etc
attrib -h -r -s "%SystemRoot%\System32\drivers\etc\hosts"
echo activate.southrivertech.com 127.0.0.1 >> hosts
echo 216.36.238.134 127.0.0.1 >> hosts
echo 23.96.124.25 127.0.0.1 >> hosts
echo 104.16.86.20 127.0.0.1 >> hosts
echo 172.217.132.104 127.0.0.1 >> hosts
attrib +r "%SystemRoot%\system32\drivers\etc\hosts"
exit
::

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    JuraAD
  • 28398
  • Стаж: 3 года 5 месяцев
  • Сообщений: 86
  • Репутация:27

    [+] [-]
bighead дал концепт!
между
@set @x=0; /*
и
*/
ты можеть батничать всё, что хочешь
@set @x=0 - оставляет следы в окружении -)))
Для JS
@if (0==1) @end /*
:: код cmd
exit /b 0 */
...
Для PS
<# :
:: код cmd
exit /b 0 #>
...
С HTA сложнее (":" в body попадает -))), приходится чистить)... У кого есть лучше вариант - напишите... (мне интересно)
:<!--
:: код cmd
exit /b 0 --><script type="text/javascript">document.body.innerHTML='';</script>
...

Страница 83 из 94


Показать сообщения:    

Текущее время: 22-Дек 08:18

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы