- Сообщения
- 14,073
- Реакции
- 5,779
@Dragokas ты говорил что в отдельной теме можно обсудить кое что.
Давай.
Что ты подразумеваешь под этим?
Ну,и для наглядности даю полностью все,не для того что бы что то изобрести,просто посмотреть что лучше ужать.
Некоторые идентичные блоки выполняются например разным кодом,чисто потому что пробую что удобнее.
На данный момент большое желание каждую часть разбивать на блоки (как в примере) что бы было удобно управлять каждым в отдельности,обновлять,переписывать.
Да и каждый кусок можно отдельным скриптом гонять при поиске ошибок или вариантов.
Давай.
IF %VERSION% == "Windows 8.1" (
Call :setting
GoTo :recbd
)
Нужно писать:
IF %VERSION% == "Windows 8.1" exit /B
Что ты подразумеваешь под этим?
Ну,и для наглядности даю полностью все,не для того что бы что то изобрести,просто посмотреть что лучше ужать.
Некоторые идентичные блоки выполняются например разным кодом,чисто потому что пробую что удобнее.
На данный момент большое желание каждую часть разбивать на блоки (как в примере) что бы было удобно управлять каждым в отдельности,обновлять,переписывать.
Да и каждый кусок можно отдельным скриптом гонять при поиске ошибок или вариантов.
CMD/BATCH:
@echo off
Chcp 866 >nul
title Проверка целостности системных файлов.
SetLocal EnableExtensions EnableDelayedExpansion
Call :global
:setting
cls
call :Elevate
echo Выберите задачу:
echo (Введите номер и нажите клавишу ENTER)
echo.
echo 1. Запустить стандартную проверку
echo 2. Запустить персональные процедуры восстановления
echo.
set choice=
Set /p choice="Ваш выбор: "
if not defined choice goto setting
if "%choice%"=="1" (
cls
goto recbd )
if "%choice%"=="2" (
cls
goto operacion )
Echo.
cls
Echo ═Вы выбрали неверное значение=
Echo.
echo.
echo.
goto setting
:global
SET Version=Unknown
VER | FINDSTR /IL "5.0" > NUL
IF %ERRORLEVEL% EQU 0 SET Version="Windows 2000"
VER | FINDSTR /IL "5.1." > NUL
IF %ERRORLEVEL% EQU 0 SET Version="Windows XP"
VER | FINDSTR /IL "5.2." > NUL
IF %ERRORLEVEL% EQU 0 SET Version="Windows 2003"
VER | FINDSTR /IL "6.0." > NUL
IF %ERRORLEVEL% EQU 0 SET Version="Windows Vista"
VER | FINDSTR /IL "6.1." > NUL
IF %ERRORLEVEL% EQU 0 SET Version="Windows 7"
VER | FINDSTR /IL "6.2." > NUL
IF %ERRORLEVEL% EQU 0 SET Version="Windows 8"
VER | FINDSTR /IL "6.3." > NUL
IF %ERRORLEVEL% EQU 0 SET Version="Windows 8.1"
echo.
echo.
IF %VERSION% == "Windows XP" GOTO XP
IF %VERSION% == "Windows 2000" GOTO XP
IF %VERSION% == "Windows 2003" GOTO XP
IF %VERSION% == "Windows Vista" GOTO Elevate
IF %VERSION% == "Windows 7" GOTO Elevate
IF %VERSION% == "Windows 8" (
Call :setting
GoTo :recbd
)
IF %VERSION% == "Windows 8.1" (
Call :setting
GoTo :recbd
)
GOTO Unknown
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:Elevate
set log=%windir%\Logs\CBS\sfcdoc.log
set log2=%windir%\Logs\CBS\sfcdoc2.log
call :CheckAdmin
:CheckAdmin
net session >NUL 2>NUL && (
> "%log%" (
echo.
echo :::::::: %Userprofile%
echo :::::::: %DATE% / %TIME%
echo :::::::: %VERSION%
echo.
echo.
echo :::::::::::::::::::::::::::::::::::::::::::::::::::::
echo.
echo ... Права Администратора получены...
echo .........sfco ErrorLevel [ %ErrorLevel% ]
)
) || (
echo .........sfco ErrorLevel[ %ErrorLevel% ] >>"%log%"
Echo Требуются права Администратора.
Echo.
echo Необходимо запустить скрипт от имени Администратора
echo Правой кнопкой мыши по файлу - пункт "Запустить от имени Администратора"
echo.
echo Для выхода нажмите клавишу ENTER
pause>nul
GoTo Exite
)
exit /B
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:WIN7
cls
echo Версия Вашей операционной системы: %VERSION%
echo.
echo.
echo ---- _SFC_ ----
echo.
echo Если есть установочный диск с версией Вашей Windows вставьте его в дисковод.
echo.
echo.
echo 1. Продолжить проверку без диска
echo (Введите цифру 1 и нажмите клавишу Enter)
echo.
echo 2. Продолжить проверку с диском
echo (Вставьте диск в дисковод,введите цифру 2 и нажмите клавишу Enter)
echo.
GoTo menu
:menu
set choice=
Set /p choice="Ваш выбор: "
if not defined choice goto menu
if "%choice%"=="1" ( goto sfco )
if "%choice%"=="2" ( goto sfco )
Echo.
cls
Echo ═Вы выбрали неверное значение=
Echo.
echo.
echo.
echo 1. Продолжить проверку без диска
echo (Введите цифру 1 и нажмите клавишу Enter)
echo.
echo 2. Продолжить проверку с диском
echo ( Вставьте диск в дисковод,введите цифру 2 и нажмите клавишу Enter )
goto menu
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:sfco
echo ::::::::::::::::::::::::::::::::::::::::::::::::::::: >>"%log%"
Echo. >>"%log%"
echo ------ SFCDoc parsing ------ >>"%log%"
cls
Echo.
Echo ВНИМАНИЕ!
Echo.
Echo Сейчас будет запущена проверка системных файлов на целостность.
Echo Не выключайте компьютер и не закрывайте окно консоли пока не закончится проверка
sfc/scannow||(
echo .........sfco ErrorLevel[ %ErrorLevel% ] >>"%log%"
cls
echo Ошибка выполнения скрипта,перезагрузите компьютер и попробуйте снова
echo запустить скрипт.
Echo.
echo Сообщите о проблеме хэлперу .
echo Нажмите клавишу ENTER что бы продолжить...
pause > nul
GoTo exite
)
cls
echo .........sfco ErrorLevel[ %ErrorLevel% ] >>"%log%"
Echo. >>"%log%"
Echo. >>"%log%"
echo.
echo.
findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >>"%log%"
echo .........findstr ErrorLevel[ %ErrorLevel% ] >>"%log%"
Echo. >>"%log%"
explorer.exe %windir%\Logs\CBS\
Echo ......Открытие папки... >>"%log%"
Echo. >>"%log%"
Echo. >>"%log%"
echo ::::::::::::::::::::::::::::::::::::::::::::::::::::: >>"%log%"
Echo. >>"%log%"
echo SafeZone.cc , @ Koza Nozdri >>"%log%"
echo Проверка завершена,теперь откройте папку %windir%\Logs\CBS\
echo если она не открылась автоматически,
echo Затем скопируйте в удобное место файл sfcdoc.log
echo Прикрепите его на форум к вашему сообщению.
echo.
Echo Использованы дополнительные параметры: >>"%log%"
Echo. >>"%log%"
Echo. >>"%log%"
Echo | type "%log2%" >>"%log%"
echo Нажмите клавишу ENTER что бы продолжить...
pause > nul
GoTo exite
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:XP
echo Версия Вашей операционной системы: %VERSION%
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\WIN51 set CDROM=%%i:
if not exist %cdrom%\win51.* (
echo.
echo.
echo.
cls
echo Вам необходимо вставить диск с вашей копией Windows
echo либо смонтировать образ диска в виртуальный привод.& goto cdopen
) else (goto koz)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:cdopen
set m.msg=^
ДА - Диск с Windows вставлен (или образ смонтирован)^&^
НЕТ - Выход из программы (ни диска ни образа нет)
cmd /U /C echo Wscript.Echo Msgbox^(replace^(Wscript.Arguments^(0^),"&",vbLF^),67,"Проверка диска"^)>"msgbox.vbs"
for /f %%a in ('cscript "msgbox.vbs" "%m.msg%"^& del "msgbox.vbs"') do set err=%%a
if "%err%"=="2" goto Exite
if "%err%"=="6" goto XP
if "%err%"=="7" goto Exite
goto Exite
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:koz
echo.
echo.
echo Сохраняю резервную копию реестра...
reg export "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup" %systemdrive%\install.reg
echo.
echo Устанавливаю значения реестра...
echo.
echo Дистрибутив обнаружен...
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup" /v ServicePackSourcePath /t reg_sz /d %cdrom%\ /f
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup" /v "Installation Sources" /t reg_sz /d %cdrom%\ /f
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup" /v SourcePath /t reg_sz /d %cdrom%\ /f
sfc/scannow
reg import %systemdrive%\install.reg
del /q %systemdrive%\install.reg
echo.
echo.
ping -n 5 127.0.0.1 > NUL
cls
echo Проверка целостности системных файлов начата.
echo Дождитесь окончания проверки.
ping -n 15 127.0.0.1 > NUL
goto Exite
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:recbd
taskkill /f /im "TiWorker.exe"
(
>>"%log%" (
echo ......... Завершение процесса TiWorker.exe [ 0 ] [ успех ]
echo ......... ErrorLevel[ %ErrorLevel% ]
echo :::::::::::::::::::::::::::::::::::::::::::::::::::::
echo.
echo.
echo ... Проверка хранилища данных ...
echo.
)
)
cls
echo ...Проверяю состояние хранилища данных...
echo.
echo.
echo ...... Проверка состояния компонентов хранилища >>"%log%"
Dism /Online /Cleanup-Image /CheckHealth
echo ......... ErrorLevel[ %ErrorLevel% ] >>"%log%"
if %ErrorLevel% EQU 0 (
echo ......... Повреждения хранилища компонентов не обнаружены >>"%log%"
) else (
echo. >>"%log%"
echo ...... Обнаружено повреждение хранилища компонентов >>"%log%"
)
:Clearanalize
echo. >>"%log%"
echo. >>"%log%"
echo.
echo.
echo ...... Оценка свободного места хранилища... >>"%log%"
Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore
echo ......... ErrorLevel[ %ErrorLevel% ] >>"%log%"
if %ErrorLevel% EQU 0 (
echo ......... Требуется очистка WinSxS >>"%log%"
) else ( echo ......... Очистка WinSxS не требуется >>"%log%" )
echo.
echo.
echo. >>"%log%"
echo ::::::::::::::::::::::::::::::::::::::::::::::::::::: >>"%log%"
echo. >>"%log%"
echo. >>"%log%"
ping -n 5 127.0.0.1 > NUL
GoTo sfco
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:Restorehealth
cls
echo ...... Процедура восстановления хранилища...
echo ......... Процедура восстановления хранилища... >>"%log2%"
Dism.exe /Online /Cleanup-Image /Restorehealth
echo ......... ErrorLevel[ %ErrorLevel% ] >>"%log2%"
if %ErrorLevel% EQU 0 (
echo ......... Восстановление компонентов хранилища завершено корректно >>"%log2%"
) else (
echo Восстановление хранилища данных прошло некорректно.
echo Сообщите о проблеме специалистам SafeZone
echo ......... Восстановление компонентов хранилища завершено НЕ корректно >>"%log2%" )
echo ::::::::::::::::::::::::::::::::::::::::::::::::::::: >>"%log2%"
echo. >>"%log2%"
echo. >>"%log2%"
echo Нажмите клавишу ENTER что бы продолжить
pause > nul
exit /b
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:Clearhealth
cls
echo ...... Процедура очистки хранилища...
echo ......... Процедура очистки хранилища... >>"%log2%"
Dism.exe /Online /Cleanup-Image /StartComponentCleanup
echo ......... ErrorLevel[ %ErrorLevel% ] >>"%log2%"
if %ErrorLevel% EQU 0 (
echo ......... Очистка хранилища завершено корректно >>"%log2%"
) else (
echo Восстановление хранилища данных прошло некорректно.
echo Сообщите о проблеме специалистам SafeZone
echo ......... Восстановление компонентов хранилища завершено НЕ корректно >>"%log2%" )
echo ::::::::::::::::::::::::::::::::::::::::::::::::::::: >>"%log2%"
echo. >>"%log2%"
echo. >>"%log2%"
echo Нажмите клавишу ENTER что бы продолжить
pause > nul
exit /b
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:operacion
echo ::::::::::::::::::::::::::::::::::::::::::::::::::::: >"%log2%"
echo. >>"%log2%"
echo. >>"%log2%"
echo :::::::: %Userprofile% >>"%log2%"
echo :::::::: %DATE% / %TIME% >>"%log2%"
echo Персональные процедуры восстановления >>"%log2%"
echo. >>"%log2%"
taskkill /f /im "TiWorker.exe"
echo ......... Завершение процесса TiWorker.exe [ 0 ] [ успех ] >>"%log2%"
echo ......... ErrorLevel[ %ErrorLevel% ] >>"%log2%"
cls
call :choice "Восстановление хранилища данных" "Очистка хранилища данных" "Очистка и восстановление хранилища данных" "Главное меню"
if %ErrorLevel% EQU 1 ( Call :Restorehealth
GoTo setting)
if %ErrorLevel% EQU 2 ( Call :Clearhealth
GoTo setting)
if %ErrorLevel% EQU 3 ( Call :Restorehealth
Call :Clearhealth
GoTo setting)
if %ErrorLevel% EQU 4 ( GoTo setting )
:choice
setlocal
if "%~1"=="" (
set result=0
pause
goto choice_3
)
set count=0
:choice_1
set /a count+=1
echo %count%. %~1
shift
if not "%~1"=="" goto choice_1
:choice_2
set /p result=Выш выбор (1-%count%):
for /l %%i in (1, 1, %count%) do if "%result%"=="%%i" goto choice_3
goto choice_2
:choice_3
endlocal & exit /b %result%
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:Exite
cls
Echo ====== Работа скрипта завершена ======
Echo.
Echo.
Echo Скрипт подгтовлен Koza Nozdri
Echo Сайт: SafeZone.cc
Echo E-mail: Fire@safezone.cc
Echo.
Echo======================================================================
Echo Бесплатное лечение компьютерных вирусов и решение проблем в работе ПК
ping -n 15 127.0.0.1 > NUL
Exit
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:UNKNOWN
cls
Echo ===== ERROR! =====
Echo Данный скрипт не предназначен для Вашей операционной системы,
Echo воспользуйтесь соответствующим версии Вашей операционной системs сценарием
Echo или обратитесь за помощью на форум: SafeZone.cc
ping -n 10 127.0.0.1 > NUL
Exit