
echo offэта команда выключает строчку ввода, и в окно не будут выводиться вводы команд.
echo onэтот действует наоборот, включает отображение. Теперь идёт команда
chcp 65001она включает кодировку UTF-8
> nulэто передаёт ответ команды со строчки в пустоту (поэтому nul), так же, ответ команды можно передавать в файл, скрипт его сам создаст
chcp 65001 > chcp.batон перезаписывает/создаёт файл chcp.bat и там будет содержимое "Active code page" Вообщем, начало кода должно быть таким:
echo off chcp 65001 > nul
CLSОчистка экрана
echo {текст}
Вывод текста или значения переменной
title {текст}
Установка имени окна на текст/значение переменной
pauseПауза скрипта до нажатия любой клавиши. Так же её круто совместить с > nul, и вместо английского текста можно ввести что-то своё, тому пример:
echo Нажми любую клавишу для продолжения! pause > nul timeoutтот же pause, но с таймером, после аргумента /t установите целое значение в секундах, и у вас будет задержка между командами. Аргумент /nobreak снимет возможность прервать таймер и продолжить сразу после нажатия любой клавиши. Так же не забывайте про > nul, он показывает ответ с таймером до продолжения
timeout /t 3 /nobreak > nul echo жди 3 секунды/t {задержка}, /nobreak для отключения прерывания.
:флаг, gotoДвоеточие перед именем флага ставит флаг, перейти к нему можно командой goto {имя флага без двоеточия}, так можно создавать круги и более удобное перемещение по строкам.
:start chcp 65001 > nul echo Нажмите любую клавишу для установки utf-8 pause > nul goto startТак же в системе есть свой флаг EOF, он стоит всегда в конце файла, можно так делать переходы к концу скрипта. Так же есть другая версия goto
call файл.bat :флагЭта команда вызывает команды bat файлов
call updater.bat :flagДля вывода даты используйте команду
date /tа для времени используйте
time /tВ обеих командах используется аргумент /t, он отменяет установку нового времени, если запустить команды без этого аргумента, то после показа времени будет запрос на установку нового времени. Можно использовать это так:
title Установщик даты/времениТак же для комментирования есть команда rem или ::
echo Установка даты date echo Установка времени time echo Время: time /t echo Дата: date /t
:: комментарий или rem тоже комментарийВы хотите покрасить текст в окне? Используйте
color {значение}
Значения ставятся из этой таблицы

exitно это не всё, ещё можно завершить не весь сеанс командной строки, а пакетный скрипт с аргументом /b и указать код выхода в переменной errorlevel
exit /b {значение переменной errorlevel}
set переменная=значение пример: set primer=42Так же можно установить значение выражения
set /a переменная=выражение пример: set /a primer=2+2Операторы:
( ) - группировка ! ~ - - унарные, для работы с одним оперантом (-5, ~5) * / % - + - арифметические << >> - логическое перемещение & - побитовое И ^ - побитовое ИЛИ && - логическое И || - логическое ИЛИ , - разделитель в выраженииЕщё можно позволить пользователю установить значение. Эта команда работает как pause и останавливает выполнение команд до ввода.
set /p переменная=строка, которая показывается пользователю пример: set /p answer=установите значение переменной:Это основа записи переменных, теперь надо их читать:
echo %primer%Переменную надо читать всегда с приставками % в начале и конце, если используете DelayedExpansion то нужно использовать ! Читать переменные можно абсолютно во ВСЕХ командах, takeown и даже сторонние программы типа FFMPEG. И так можно сделать такое:
echo Установщик заголовка окна set /p title=Заголовок окна: title %title% echo Установлен заголовок %title%или даже настоящие программы для пользования, например таймер сна:
title Таймер сна echo Программа на установку таймера выключения ПК set /p timer=Введите время на выключение в секундах: shutdown /s /t %timer%и это вся база для работы с переменными, если у вас возникают проблемы с их чтением, то используйте DelayedExpansion
setlocal enabledelayedexpansionТеперь разберём IF, это команды для сравнения значения переменной с заданным числом. Чтобы выполнить отдельный код если переменная не равна заданному числу то используем ELSE (это часть команды IF и отдельно прописать её нельзя)
set /p primer=Введите число: if %primer%=="1" ( echo Вы ввели 1 ) else ( echo Вы не ввели 1 )Операторы сравнения:
EQU/== - равенство NEQ - неравенство LSS/< - меньше GTR/> - больше LEQ - нестрогое равенство, меньше GEQ - нестрогое равенство, больше exist - наличие файлаТак можно сделать проверку прав администратора вместе с командой
net sessionЭта команда которая ничего не делает, но требует прав администратора, если их нет то значение %errorlevel% будет равно 1, а для получения прав администратора мы будем использовать powershell с аргументами (иначе никак)
echo Проверка прав администратора net session > nul if %errorlevel%==0 ( echo Есть права администратора ) else ( echo Получение прав администратора powershell -Command "Start-Process 'cmd.exe' -ArgumentList '/c \"\"%~f0\" admin\"' -Verb RunAs" )Команда powershell перезапускает полностью сеанс командной строки, следовательно и скрипт.
if exist "text.txt" ( echo Найден файл text.txt в каталоге с программой ) else ( echo файл text.txt не найден в каталоге с программой )И на этом всё. Тут все базовые команды для начала в сфере BAT скриптов.
Ultimate's Web с 2024, работает на дизеле.