Мои пакетные скрипты для Windows (*.cmd, *.bat)

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

Основы этого языка программирования обьяснять не буду, приведу лишь пару примеров нестандартных решений:

• Как сделать паузу в командном файле?
Данный код задержит выполнение скрипта на 4 секунды

ping 127.0.0.1 -n 4 > nul

• Как вывести текст в одну строку (без переносов на новую)?

<nul set /p strTemp=Весь этот текст
<nul set /p strTemp=будет находиться
<nul set /p strTemp=на одной строке.

• Как прочесть строку из реестра?

@Echo Off
SetLocal EnableExtensions EnableDelayEdexpansion

For /F "Tokens=2* Delims=  " %%I In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "Shell"') Do Set Shell1=%%J
Echo Shell=[%Shell1%]

endlocal

 

 

Мои скрипты:

 

• Скрипт для подключения к интернету через 3G модем или dialup
Позволяет отказаться от громоздкой программы, идущей в комплекте. Разве что ради проверки баланса придется залезать в родную программу. 

@echo off

SET ITERAT=1
:loop
echo Установка связи (%ITERAT%/20)
SET /A ITERAT=%ITERAT%+1
rasdial life:) >nul

if %ERRORLEVEL%==0 (
echo Успешно!
goto end_of_error
)
if %ERRORLEVEL%==619 (
echo Ошибка! Может нет денег на балансе?
goto end_of_error
)
if %ERRORLEVEL%==734 (
echo Ошибка! Удаленный комп отказал.
goto end_of_error
)
if %ERRORLEVEL%==720 (
echo Ошибка! Удаленный комп не отвечает.
goto end_of_error
)
if %ERRORLEVEL%==797 (
echo Ошибка! Модем не найден или занят.
goto end_of_error
)
echo Ошибка с кодом %ERRORLEVEL%
:end_of_error

if %ITERAT% GTR 20 (
Echo Выходм...
ping 127.0.0.1 -n 6 > nul
goto EOF
)

if %ERRORLEVEL% GTR 0 (
ping 127.0.0.1 -n 3 > nul
goto loop
)

echo Запуск HandyCache
start HandyCache.lnk
Echo Выходм...
ping 127.0.0.1 -n 4 > nul

 

 

• Стирание содержимого всех файлов по маске в папке со скриптом
Представляете, по работе нужно было. Скриптом куда проще чем ручками.

@echo off

For %%I In (
"0*.txt"
) Do (
del "%%~I"
ping 127.0.0.1 -n 1 > nul
@echo.>"%%~I"
)

 

• Проверка авторагрузки
Скрипт проверяет четыре злачных метста, в которых любят прописываться вирус для автозапуска при старте системы. Скрипт не раз выручал при лечении чужих копьютеров.

@Echo Off
echo Проверка автозагрузки:
echo.
SetLocal EnableExtensions EnableDelayEdexpansion

REM Shell - подменой файла или указанием ссылки на другой файл можно обеспечить запуск
For /F "Tokens=2* Delims=  " %%I In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "Shell"') Do Set Shell1=%%J
<nul set /p strTemp=Shell        = [%Shell1%]
If "%Shell1%"=="explorer.exe" (
echo  - Ok
) else (
echo  - Обратить внимание
)

REM Userinit - подменой файла или указанием ссылки на другой файл можно обеспечить запуск
For /F "Tokens=2* Delims=  " %%I In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "Userinit"') Do Set Userinit1=%%J
<nul set /p strTemp=Userinit     = [%Userinit1%]
If "%Userinit1%"=="C:\WINDOWS\system32\userinit.exe," (
echo  - Ok
) else (
echo  - Обратить внимание
)

REM load - список загрузки при старте системы
For /F "Tokens=2* Delims=  " %%I In ('Reg Query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows" /V "load"') Do Set load1=%%J
<nul set /p strTemp=load         = [%load1%]
If "%load1%"=="" (
echo  - Ok
) else (
echo  - Обратить внимание
)

REM AppInit_DLLs - позволяет запускать DLL при старти системы
For /F "Tokens=2* Delims=  " %%I In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /V "AppInit_DLLs"') Do Set AppInit_DLLs1=%%J
<nul set /p strTemp=AppInit_DLLs = [%AppInit_DLLs1%]
If "%AppInit_DLLs1%"=="" (
echo  - Ok
) else (
echo  - Обратить внимание
)

endlocal

echo.
echo Проверка размеров файлов:
echo.

Call :ChkSize "%WINDIR%\explorer.exe" 1034240
Call :ChkSize "%WINDIR%\system32\userinit.exe" 26624

echo.
echo.
echo.
echo Завершено
pause > nul
GoTo :EOF


rem ===============================================
:ChkSize
  If "%~z1"=="%2" (
    echo %~nx1 - ok
  ) else (
    echo %~nx1 - подозрителен
  )
GoTo :EOF

 

------ Другие статьи по теме  ------

  1. Уменьшение всех фотографий в папке на 50%

 

------ Чужое ------

libType(форум / скачать) - Просто гениальный скрипт, расширяющий возможности echo. Поддерживает дописывание строк, вывод поверх строки, стирание строки, эффект печатной машинки и др. Обязательно посмотрите демо! (Не работает на Win7)