PresserF
 - Longevity: 26 days
- Posts: 4
- REPUTATION: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
|
 Отправлено: 17-Jan-2023 21:58
(after 1 day 20 hours)
JuraAD
 - Longevity: 1 year 6 months
- Posts: 47
- REPUTATION:17[+] [-]
|
PresserF, Как оно вызовет :abc , если выполняется в отдельном процессе? (она не увидит эту метку в принципе) Напиши функцию в отдельном файле и вызови - если сильно нужно... -) Кроме того, чтоб анализировать код возврата, нужно дождаться завершения процесса (ключик - wait), так ты его запустил параллельно к основному... (exit /b !ERRORLEVEL!) Есть вариант вызова одного CMD с разными функциями - в начале смд написать выбор (конвеер) функций
|
PresserF
 - Longevity: 26 days
- Posts: 4
- REPUTATION:0[+] [-]
|
JuraAD, все сделать в одном пакетном батнике не получится? Извините, только учусь писать скрипты. Про команду start, это из глубин инета взято, только оно не работает вовсе. Идея объединить куча батников в один пакетный.
|
JuraAD
 - Longevity: 1 year 6 months
- Posts: 47
- REPUTATION:17[+] [-]
|
Примеры для теста кода возврата: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 - не выводит сообщение) зы: работы много, сил нет разбирать пример, позже... зызы: все можно сделать в одном файле, зависит от методов и алгоритмов...
|
 Отправлено: 21-Jan-2023 16:49
(after 2 days 19 hours)
PresserF
 - Longevity: 26 days
- Posts: 4
- REPUTATION:0[+] [-]
|
JuraAD, попробовал, в первом случае start "test" /wait cmd /c 12334exit /b 1& if errorlevel 1 echo not 0, окно открывается и сразу закрывается, а во втором - окно открыто постоянно. Только вот не задача, если добавить строчку в пакетный файл, окно открывается и сценарий выполняется с начальной страницы, а при переходе в предыдущее окно выводится сообщении о продолжении сценария, и, вне зависимости от выбора окно закрывается.
|
JuraAD
 - Longevity: 1 year 6 months
- Posts: 47
- REPUTATION:17[+] [-]
|
Конвеер функций - пример "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 /?
|
Page 83 of 83
Current time is: 08-Feb 23:20
All times are UTC + 3
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
|
|