Как создать cmd скрипт windows

Дисклеймер

Мне 12 и я сам в этой теме плохо шарю, т.к. инфы в инете мало. Пж, без хейта.

Что такое батники и с чем их едят

Пакетный файл или в простонародье батник — это файл, который запускает командную сроку или сокращенно cmd, которая построчно интерпретирует команды, записанные в нем. Подробнее смотрите на https://ru.wikipedia.org/wiki/Пакетный_файл.

Первая программа и основные команды

Чтобы сделать батник, нужно сначала создать текстовый файл с именем test и изменить расширение c .txt на .bat. О том, как можно это сделать, читайте здесь: https://remontka.pro/file-extensions. У вас должен появиться файл с такой иконкой:

test.bat

test.bat

Нажимаем на него ПРАВОЙ кнопкой мыши. Должно появиться диалоговое окно. Нажмем «Открыть». Должен открыться блокнот, пишем:

@echo off
echo Hello world!
pause

В 1-ой сроке («@echo off») префикс ‘@ ‘ означает, что команда не будет выведена на экран(попробуйте его убрать :-) ), сама же команда (echo) выводит текст следующий за ней(см. строку 2), НО, если подать строку «off», все последующие команды будут действовать так, как будто перед ними стоит префикс ‘@’, «echo on», соответственно, выключает этот режим. Чтобы вывести символ «%», его нужно дублировать, потом поймете почему :-), для вывода пустой строки поставьте «.» после «echo»
В 3-ей строке команда выводит строку «press any key to continue . . .» (если у вас русский язык — «Для продолжения нажмите любую клавишу . . .») и останавливает программу до нажатия любой клавиши.

Наводим красоту

Команда «rem»

не эта :)

не эта :)

не делает ничего и служит комментарием к коду

rem Это самая лучшая прога в мире!!!!!

Код включает русские символы и другие из ascii(например: «╬▓☼», можно скопировать с http://pascalguru.ru/psevdograf.html), иначе ascii символы превратятся в кракозябры:

chcp 65001

Следующий код код работает, как команда «pause», но ничего не выводит на экран и не реагирует на нажатие клавиш(я потом объясню, как это работает).

:m
goto m

А этот — меняет заголовок окна на «name»

Заголовок окна

Заголовок окна
title name

Эта команда меняет цвет фона и текста, вместо a и b можно поставить любые шестнадцатеричные цифры(команда не сработает если a = b) см. таблицу ниже. Запись c одной буквой «а» аналогично записи «0a»

color ab

Таблица

Таблица

Эта — досрочно завершает программу

exit

Переменные

Создать переменную можно с помощью команды set, синтаксис объявления следующий: P.S. это не совсем переменные, это скорее макросы (для тех к кто не знает C/C++ это именованный кусочек кода, имя которого заменяется на этот кусочек кода)

set a=Hello world

Если после «set» добавить флаг «/a» то:

  1. Переменной задастся значение выражения, а не его текст, например:

    set a=2+2
    > 2+2
    set /a a=2+2
    > 4
  2. Переменной можно присвоить ТОЛЬКО числовое значение

Чтобы обратиться к переменной, нужно окружить ее символами «%» (так %name%), пример кода:

set /a a=%b%+%b%
echo %a%

Подробнее о переменных

Если добавить флаг «/p», то выводиться значение после символа «=», а переменной задается введенное значение(запустите этот код:)

@echo off
set /p a=Enter str
echo %a%
pause

следующий код вырезает строку от символа номер «a» до символа номер «b» НЕ включительно(счет идет с нуля, отрицательные числа — счет с конца от единицы). Если аргумент один, то он присваивается числу «b», а «a» = 0

%str:~a,b%

следующий заменяет подстроки «a» в строке на строки «b»:

%str:a=b%

Циклы и условия

Цикл можно создать с помощью команды «for», синтаксис следующий:

for %%i in (a b c) do (
		cmd
)

или такой

for %%i in (a b c) do cmd

(a b c) это список (не обязательно из 3-х элементов) и переменная %%i (нужно ставить символ после процентов, а не между) по очереди проходит по значениям в списке

Если добавить флаг «/l», то переменная в первый раз будет равна «a». К ней каждый раз будет прибавляться «b», пока она не станет больше «c»(тут размер ДОЛЖЕН равняться 3)

запустите этот код, тут все наглядно

@echo off
chcp 65001
echo Начало
for /l %%i in (1 1 10) do echo %%i
echo Конец
pause

Команда if выполняет код, если условие верно (или если поставить not после if, когда НЕ верно), вот операторы сравнения:

P.S. строки нужно брать в кавычки «%str%»==»Hello»

equ(==)

=

neq

lss

<

leq

gtr

>

geq

пример кода:

@echo off
set /p a=Enter number
if a gtr 0 echo positive else\
if a equ 0 echo 0 else echo negative
pause

в 3-ей строке, если «a» > 0 выводиться «положительный»(на английском :-) ), если равен — 0,в 4-ой если меньше — «отрицательный»

символ «\» означает, что команда продолжается на следующей строке

Метки

Создадите файл start.bat в той же папке, где и test.bat, напишите в нем:

test.bat 2 2

Мы запустили батник, НО подали в него аргументы 2 и 2. Чтобы к ним обратиться, нужно написать %n, где «n» — номер аргумента, считая от одного(не от нуля), вот код, считающий сумму первого и второго аргумента (их может быть от нуля до 9-и):

@echo off
set /a res=%1+%2
echo res
pause

Метка — это именованное место в коде, она создается с помощью команды «:name»

А этот переходит на метку :m и продолжает выполнение, начиная с нее

rem куча кода
:m
rem куча кода
goto m
rem куча кода

И в завершение статьи, хочу сказать о команде call. Она превращает в последующей команде «%%» в «%», а переменные — на их значения. Пример использования:

call echo %%str:~%a%,%b%%%

Человек на черном фоне
Всем нам, приходилось сталкиваться с рутинными задачами изо дня в день на работе, и не только.

Например:

  1. Необходимо раз в месяц удалять все файлы из папки обмен.
  2. «Добросовестные» пользователи не выключают компьютеры, и уходят домой, а вам потом по голове дают за то, что компьютер работал, и жрал электроэнергию.
  3. У вас 20 человек в кабинете, принтер один и всем нужно выводить на него печать. Можно написать батник закинуть его в обмен зайти в кабинет и всем пользователям сказать зайдите туда-туда, нажмите то-то, и можете печатать, а если у Вас есть active directory, то можно распространить с помощью неё.

Можно еще привести множество примеров обыкновенных задач, на которые лучше не тратить свое время, а автоматизировать процесс. Сегодня хочу рассказать, как пишутся элементарные bat скрипты.

Давайте разберем первый пример:

Необходимо раз в месяц удалять все файлы из папки обмен.

  1. Открываем WordPad, блокнот не подойдет, он не умеет сохранять в кодировке 866.
  2. Пишем:

del /q “c:\обмен\”
pause
Команда del- удаляет файлы, ключ q говорит, удалять файлы без подтверждения пользователя, дальше идет путь до папки обмен, команда pause – это для вашего удобства, что бы окно не закрылось автоматически после выполнения работы скрипта, можно её не писать.

  1. Дальше выбираем Файл => Сохранить как => в строке Имя файла пишем допустим, del_obmen.bat, жмем Ок, запускаем и наслаждаемся.

Второй пример:

«Добросовестные» пользователи не выключают компьютеры, и уходят домой, а вам потом по голове дают за то, что компьютер работал, и жрал электроэнергию.

  1. Открываем WordPad.
  2. Пишем:

SHUTDOWN /s
Пояснения я думаю ни к чему.
3. Дальше выбираем Файл => Сохранить как => в строке Имя файла пишем допустим, shutdown.bat, жмем Ок, запускаем и наслаждаемся.
4. Дальше открываем панель управления => планировщик заданий, создаем задание в 20 00, думаю понятно для чего.

Третий пример:

У вас 20 человек в кабинете, принтер один и всем нужно выводить на него печать. Можно написать батник закинуть его в обмен зайти в кабинет и всем пользователям сказать зайдите туда-туда, нажмите то-то, и можете печатать, а если у Вас есть active directory, то можно распространить с помощью неё.

  1. Открываем WordPad.
  2. Пишем:

start \\192.168.0.37\SamsungU
Start – запуск, \\192.168.0.37 – ip адрес, \SamsungU – имя принтера.

Если у вас ip адреса раздаются по DHCP, то лучше ввести не ip адрес, а имя компьютера. 

3. Дальше выбираем Файл => Сохранить как => в строке Имя файла пишем допустим, print.bat, жмем Ок, запускаем и наслаждаемся.

 

Основные команды, которые используются для написания батников:

ASSOC — Отображает или модифицирует связи расширений файлов
AT — Планирует команды и программы для выполнения на компьютере.
ATTRIB — Отображает или изменяет атрибуты файла.
BREAK — Устанавливает или отменяет проверку комбинации [Ctrl+C].
CACLS — Отображает или модифицирует списки управления доступом (ACLs) для файлов.
CALL — Вызывает один *.BAT-файл из другого.
CD — Отображает имя или изменяет имя текущей директории.
CHCP — Отображает или устанавливает номер активной кодовой страницы.
CHDIR — Отображает имя или изменяет имя текущей директории.
CHKDSK — Проверяет диск и отображает отчет о состоянии.
CLS — Очищает экран.
CMD — Стартует новый экземпляр интерпретатора команд Windows NT.
COLOR — Устанавливает цвета по умолчанию для переднего и заднего плана консоли.
COMMAND — Стартует новую копию интерпретатора команд Windows.
COMP — Сравнивает содержимое двух файлов или установки файлов.
COMPACT — Отображает или видоизменяет сжатие файлов на патрициях Windows NT(NTFS).
CONVERT — Конвертирует FAT томов к формату файловой системы Windows NT(NTFS). Вы не можете конвертировать текущий диск.
COPY — Копирует один или больше файлов на другое место.
CTTY — Изменяет терминальное устройство, используемое для управления вашей системой.
DATE — Отображает или устанавливает дату.
DEL — Удаляет один или более файлов.
DEBUG — Выполняет отладку, тестирование программ и редактирование инструментальных средств.
DIR — Отображает список файлов и поддиректорий в директории.
DISKCOMP — Сравнивает содержимое двух дискет.
DISKCOPY — Копирует содержимое одной дискеты на другую.
DOSKEY — Редактирует командные строки, восстанавливает команды Windows и создает макрос.
ECHO — Отображает сообщения, или включает/выключает вывод команд.
EMM386 — Включает/выключает поддержку расширенной памяти EMM386.
ENDLOCAL — Заканчивает локализацию изменений окружающей среды в *.BAT-файле.
ERASE — Удаляет один или более файлов.
EXIT — Прекращает выполнение программы «CMD.EXE» (интерпретатор команд).
EXTRACT — Средство извлечения информации из CAB — файлов.
FC — Сравнивает два файла или установки файлов, и отображает различие между ними.
FIND — Ищет текстовую строку в файле или файлах.
FINDSTR — Поиск строк в файлах.
FOR — Выполняет указанную команду для каждого файла в наборе файлов.
FORMAT — Форматирует диск для использования с Windows.
FTYPE — Отображает или модифицирует типы файлов, используемых в связях расширений.
GOTO — Направляет интерпретатор команд Windows NT к помеченной строке в *.BAT-файле.
GRAFTABL — Способность Windows отображать символы псевдографики, вставленные в графическом режиме.
HELP — Обеспечивает информацию Help для команд Windows.
IF — Выполняет обработку условия в *.BAT-файле.
KEYB — Конфигурирует клавиатуру для заданного языка.
LABEL — Создает, изменяет, или удаляет метку тома на диске.
LOADHIGH(LH) — Загружает программу в верхние адреса памяти.
MD — Создает директорию.
MEM — Отображает величину используемой и свободной памяти в вашей системе.
MKDIR — Создает директорию.
MODE — Конфигурирует системное устройство.
MORE — Отображает вывод одного экрана за раз.
MOVE — Перемещает один или более файлов из одной директории в другую на том же диске.
NETSTAT — Отображает статистики протоколов и текущих сетевых соединений TCP/IP.
NLSFUNC — Загружает информацию, специфическую для страны.
PATH — Отображает или устанавливает путь поиска для выполняемых файлов.
PAUSE — Приостанавливает обработку *.BAT-файла и отображает сообщение.
POPD — Восстанавливает предыдущее значение текущей директории, сохраненной по PUSHD.
PRINT — Печатает текстовый файл.
PROMPT — Изменяет подсказку к командам Windows.
PUSHD — Сохраняет текущую директорию, потом изменяет.
RD — Удаляет директорию.
RECOVER — Восстанавливает читаемую информацию с плохого или дефектного диска.
REM — Записывает комментарии (примечания) в *.BAT-файлы или CONFIG.SYS.
REN — Переименует файл или файлы.
RENAME — Переименует файл или файлы.
REPLACE — Заменяет файлы.
RESTORE — Восстанавливает файлы, которые были архивированы с использованием команды BACKUP.
RMDIR — Удаляет директорию.
SET — Отображает, устанавливает или удаляет переменные среды Windows.
SETLOCAL — Начинает локализацию изменений среды в *.BAT-файле.
SETVER — Устанавливает номер версии MS-DOS, который Windows сообщает программе.
SHIFT — Сдвигает позицию замещаемых параметров в *.BAT-файле.
SMARTDRV — Инсталлирует и конфигурирует утилиту кэширования диска SMART — драйва.
SORT — Сортирует входной поток.
START — Стартует отдельное окно для выполнения указанной программы или команды.
SUBST — Связывает путь с литерой диска.
SYS — Копирует файлы системы MS-DOS и интерпретатор команд на указанный вами диск.
TIME — Отображает или устанавливает системное время.
TITLE — Устанавливает заголовок окна для сеанса «CMD.EXE» .
TREE — Графически отображает структуру директория в драйве или путь.
TYPE — Отображает содержимое текстового файла.
VER — Отображает версию Windows.
VERIFY — Сообщает Windows, проверять ли правильность записи файлов на диск.
VOL — Отображает метку дискового тома и серийный номер.
XCOPY — Копирует файлы и деревья директории.
Также есть очень хороший форум, где куча готовых скриптов.
Командная строка, батники\сценарии (bat, cmd) 

Предыдущая

Windowsntvdm.exe загрузка процессора на 100%

Следующая

WindowsОбзор Windows 8

  • Главная

  • Инструкции

  • Windows

  • Bat-файлы: создание, настройка и основные команды

BAT-файлы, или, как их еще называют опытные пользователи, «батники» — это текстовые файлы с расширениями .bat или .cmd, которые хранят набор команд и выполняют их в терминале операционной системы. Такие файлы необходимы для автоматизации стандартной работы пользователей в Windows.

В данной статье будет подробно рассказано о всех процессах взаимодействия с bat-файлами, их работе и основных командах, которые используются в процессе создания таких файлов.

В данном разделе статьи поговорим о взаимодействии с bat-файлами. Для начала пройдемся по требованиям, которых будет достаточно для написания своего первого «батника»:

  1. Устройство с операционной системой Windows.
  2. Наличие блокнота, либо другого текстового редактора. Рекомендуем использовать редакторы с встроенной подсветкой синтаксиса — например, Notepad++.

Создание bat-файла

Перейдем к созданию bat-файла. Для этого откроем любой текстовый редактор и заполним его некоторым содержимым. В качестве примера, создадим bat-файл, который будет выводить в окне интерпретатора командной строки сообщение «Hello, user!»:

@echo off
echo Hello, user!
pause

Теперь необходимо сохранить файл, используя расширение .bat. Для этого переходим в меню и выбираем «Сохранить как…», как показано на картинке ниже.

Image13

Далее необходимо выбрать тип файлов в открывшемся окне. Для этого открываем соответствующий выпадающий список и выбираем «Все файлы», а в строке выше указываем имя файла и его расширение. Результат продемонстрирован на картинке ниже.

Image6

Пример выше подходит для пользователей, которые используют блокнот в качестве текстового редактора. Если пользователь использует Notepad++, то в типе файла выбираем «Batch file», как показано на рисунке ниже.

Image1

Если вдруг пользователь сохранил файл с неправильным расширением — ничего страшного. Это можно исправить, переименовав файл и указав правильное расширение. Чтобы это сделать, необходимо включить отображения расширений во вкладке проводника «Вид».

Image5

Запуск bat-файла

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

Image3

Перечисленные выше методы запуска допустимы только в тех случаях, когда пользователь не ожидает ответа после запуска «батника». Если же запуск подразумевает какое-то системное сообщение или численный результат как ответ на выполнение команд, тогда необходимо выполнять запуск, используя интерпретатор командной строки.

Чтобы запустить интерпретатор командной строки, достаточно выполнить сочетание клавиш WIN+R, вписать в поле ввода cmd и нажать клавишу Enter. В результате откроется окно командной строки, в которое необходимо перенести нужный файл для его запуска и нажать клавишу Enter. 

Image2

После выполненных действий, «батник» начнет выполнение команд и отобразит необходимый результат, если это запланировано.

Запустим тестовый файл, который мы создавали немного ранее и посмотрим на результат.

Image10

Как видно по картинке выше, сообщение успешно отобразилось.

Настройка периодического запуска

Полезная функция при работе с bat-файлами – это возможность запускать их с некоторой периодичностью. Для реализации понадобится встроенный в Windows сервис — «Планировщик заданий».

Откроем «Планировщик заданий». Для этого используем комбинацию клавиш WIN+R и вводим taskschd.msc в поле ввода, после чего нажимаем клавишу Enter. 

Image11

В открывшемся окне планировщика выбираем в правом меню «Действия» пункт «Создать простую задачу…». После этого откроется окно «Мастер создания простой задачи», в которой пользователю будет предложено заполнить 4 вкладки:

  • Создание простой задачи. Здесь будем указывать имя и описание задачи.
  • Триггер. Данная вкладка отвечает за выбор периода (как часто будет запускаться bat-файл и в какое время).
  • Действие. Здесь необходимо выбрать запуск программы и нажать «Далее». После этого пользователь указывает путь до необходимого «батника».
  • Завершение. В данной вкладке происходит проверка всех введенных данных.

Image15

По завершении заполнения всех вкладок bat-файл добавляется в расписание Windows и будет автоматически запускаться в указанный период.

Синтаксис написания bat-файла

Ниже будут представлен список основных правил, которые нужно знать при написании bat-файла:

  • Любая команда должна быть определена с новой строки.
  • Указанные в файле команды выполняются строго по порядку, от первого к последнему. Исключением являются те случаи, когда внутри файла организован переход от одной части к другой (например goto).
  • Чтобы исключить возможные ошибки, директории указываются в кавычках.
  • |Y| указывается перед командами, которые требуют подтверждения (Например del или format).
  • Возможно указывать два типа команд: встроенные и внешние. Первые — это команды самого интерпретатора командной строки (о них мы поговорим позже). Ко второму типу относятся все возможные исполняемые файлы (расширения .EXE, .CMD или .BAT).
  • Для отключения отображения командной строки в открывшемся окне интерпретатора, после запуска «батника», используется @echo off в начале файла.

Комментирование 

Оставлять комментарии во время написания bat-файла возможно тремя способами:

  1. rem. После ее объявления указывается необходимый комментарий.
rem текст_комментария
  1. Двойное двоеточие. Работает аналогично команде rem.
:: текст_комментария
  1. goto. К ней нужен особый подход, так как она используется не только для комментирования, но и для перехода к другой части bat-файла. После объявление команды указывается метка (в примере ниже — start). 
goto start
текст_комментария
:start

Для каждого комментария должна быть объявлена своя уникальная метка.

Основные команды

Ниже в таблице представим основные команды, использующиеся при написании bat-файла, а также аргументы к ним и их описание.

Команда

Аргумент

Описание

cd

Каталог

Переход к указанному каталогу (пустой аргумент — возвращение текущей директории).

pause

Приостановка пакетного файла.

start

Путь к файлу/команда

Выполнение указанной программы либо команды в отдельном окне.

md

Каталог

Создание каталога.

copy

Исходные файлы (путь к ним) и каталог/имя, куда копировать

Копирование одного или нескольких файлов в указанный каталог.

del

Имя файла или каталога

Удаление одного или нескольких файлов.

call

Путь до файла для запуска

Запуск пакетного файла из другого.

title

Имя заголовка

Изменение заголовка окна.

move

Исходный и конечный путь к файлу/файлам

Перемещение одного файла или группы файлов из одного каталога в другой.

color

Цвет фона и текста (задается цифрой либо буквой)

Изменение цветов текста и фона.

exit

Завершение работы пакетного файла.

Это не полный список. Чтобы ознакомиться со всеми командами, достаточно написать в строке интерпретатора командной строки help, как показано на картинке ниже.

Image9

Переменные

Кроме команд, стоит упомянуть о переменных, которые также можно использовать при написании bat-файла.

Для добавления переменной существует команда set. Чтобы объявить переменную, необходимо написать в строке set, а затем ее имя и значение. Если необходимо обратиться к переменной и считать ее значение, то к имени переменной слева и справа добавляется символ %. Приведем ниже пример:

@echo off
set example=Hello, user!
echo %example%
pause

Учитывайте, что пробелы перед знаком равенства и после не ставятся, иначе программа не будет работать. Результат запуска «батника» из примера выше продемонстрирован на картинке ниже.

Image14

Также, при объявлении переменной можно воспользоваться флагом /a, который отвечает за присваивание переменной числа. Например:

@echo off
set /a example=2*3
echo %example%
pause

При отсутствии такого флага, переменной присваивается вся строка после знака равенства. Результат представленной выше программы продемонстрирован на картинке: 

Image4

Кроме обычных переменных существуют переменные аргумента. Данным переменным присваиваются значения, которые передаются в момент вывоза bat-файла. Выглядят они следующим образом: %1, %2, %3 и т.д. 

Приведем пример для лучшего понимания:

@echo off
@echo First argument variables - : %1
@echo Second argument variables - : %2
@echo Third argument variables - : %3
pause

Во время запуска представленного выше «батника», передадим строку «Hello, user!». Результат будет продемонстрирован на картинке ниже.

Image12

Пример bat-файла: удаление ненужных файлов

Во время работы у пользователей часто остаются ненужные файлы, которые необходимо почистить. С этой целью отлично справляется корректно написанный «батник».

Например, у пользователя во время работы появляется много файлов с расширением .txt в некотором каталоге и его подкаталогах, которые необходимо подчистить. Реализуем для этого случая простой «батник»:

@echo off
del /f /s /q C:\путь_к_каталогу\Example\*.txt

Разберем работу каждого флага:

  • /f — данный флаг позволяет удалять все возможные файлы (даже те, что открыты только для чтения).
  • /s — флаг позволяет удалять файлы не только из каталога, но и его подкаталогах.
  • /q — данный флаг убирает подтверждение удаления файлов.

Теперь создадим каталог Example и подкаталог ExampleWithTXT, а после добавим и в первый, и во второй файлы с расширением .txt, чтобы проверить работоспособность созданного выше «батника»:

mkdir Example
cd Example
mkdir ExampleWithTXT
notepad Example1.txt
notepad Example2.txt
notepad Example3.txt
cd ExampleWithTXT
copy C:\путь_к_каталогу\Example\*.txt

После выполнения всех команд будет создан тестовый каталог Example с тремя текстовыми файлами и подкаталогом ExampleWithTXT. В последний были скопированы три текстовых файла из родительского каталога.

Image8

Теперь запустим bat-файл и посмотрим на результат. Он будет представлен на картинке ниже.

Image7

Все файлы с расширением .txt были успешно удалены из каталога Example и подкаталога ExampleWithTXT.

Заключение

В инструкции был подробно описан процесс создания bat-файлов и дальнейшего взаимодействия с ними. Также были продемонстрированы основные команды и их описание. Следуя инструкции, пользователь сможет создать свой первый «батник» и успешно автоматизировать работу в операционной системе Windows.

If you have every used the Command Line, or CMD, interface in Windows, you probably have some idea of the powerful things it can do. Creating your own CMD scripts, you can do even more, but faster.

A CMD script does the same thing as if you typed commands into the CMD window. If you want to do something on a regular basis, such as telling Windows to turn off your computer after an hour, you can write a script and then you can activate the script whenever you want to run it.

Understanding CMD and Written Commands

In the early days of personal computing almost everything was done by typing command_s into a command line interface. If you wanted to open a program, you had to type the name of the program into the command line. Today, you can simply click or touch an icon on your screen to perform most actions. But Windows still accepts type-written commands in the CMD utility. You can write commands_ to open programs, add or change account permissions, back up files or get information about your computer using the CMD window.

Understanding CMD Scripts

The Command Prompt utility in Windows can be opened at any time, simply by typing «cmd» in the Windows Start menu. Here, you can type all sorts of commands to open programs, change settings and make tweaks to how Windows and its programs perform. In Microsoft’s long history of operating systems, CMD i_s a relative newcomer. In MS-DOS, before Windows was released, when you wanted to run a script, you would save it as a .bat file. While you can still save files with that extension today, most people use the .cmd extension._

Using a Script CMD to Open Notepad

To create and save a CMD switch, it’s best to use a basic text editor. Using a word processor like Microsoft Word makes saving the file a hassle. Notepad is much easier to use. So to demonstrate how CMD works, let’s open use it to open Notepad.

  1. Type CMD in the Windows Start menu and press Enter to open CMD.exe.
  2. Change the directory from your current username folder to the base directory by typing «cd\» and pressing Enter. It should now read «C:\>» before the blinking cursor.
  3. Type the following line and press Enter: start «c:\windows\system32» notepad.exe

As soon as you press Enter, you will see Notepad open. The command you entered has told Windows to start the notepad.exe program, which is located in the system32 folder, which is inside the Windows folder, on the C: drive. CMD commands are not case-sensitive so you can use lowercase or uppercase letters interchangeably.

Creating Your First Script CMD File

Now that Notepad is open, create your first CMD script file by typing the same line you used in the CMD window into notepad: start «c:\windows\system32» notepad.exe

Save the batch file to your desktop by selecting «Save As» from the File menu. Name the file «firstscript.cmd» and click «Save.» Notepad script commands must be saved with the .cmd extension, rather than the default .txt extension.

Double-click the new CMD file on your desktop. You will see the CMD window open for a fraction of a second and then close as Notepad is launched.

This is hardly a useful script, since a desktop shortcut does the same thing. To create something more useful, let’s edit the file so that it creates a new text file on your desktop listing all of your programs.

Using Echo and Echo Off

While the CMD window wasn’t open long enough to see it, by default it will always display the text that was entered in the CMD file when it runs. For longer scripts, this can be a nuisance, so it’s generally good form to turn this off by using the Echo Off command in the first line of the CMD file. By itself, Echo Off disables the display of any text that follows it. To make the Echo Off command apply to itself, put an @ symbol in front of it. Thus, your two-line CMD script would be:

@echo off

start «c:\windows\system32» notepad.exe

Creating a Text File Script

This CMD script will list all the files you have in your Program Files folder and put that list in a new text file.

  1. Open Notepad. Type «@echo off«in the first line and press Enter.
  2. In the second line, type: dir «C:\Program Files» > list_of_files.txt
  3. Select «Save As» from the File menu and save the file as «program-list-script.cmd.»
  4. Double-click the new text file on your desktop to see the list of files and folders.

The text file will appear in the same folder where the script file itself is. So if the script file is on your desktop, the list-of-files.txt file will also appear on your desktop.

If you want to change the folder where the text file is placed, you can specify its own folder in the script. For example, if you want it to be placed in your Documents folder, use: dir «C:\Program Files» > C:\Users\David\Documents\list_of_files.txt

Creating a Systems Information Script

If you want to use a script to give you needed information, it’s not always necessary to produce a text document with a script. You can have the information posted directly in the CMD window.

The example script below will give you basic information about your computer, including the operating system and version number, the BIOS version, the total physical memory and your computer’s network address. To use the script, type or copy the lines below into a new Notepad file and save it with the .cmd file extension, such as «my_computer_info.cmd.»

In this example, ECHO OFF is used to prevent the CMD window from displaying the script.

The ECHO command is used to display specific text, as well as some equal signs (===) as lines to organize the information in sections.

To insert a comment for your own use — without it affecting the script or appearing in the CMD window — type two colons first. Anything in the same line following » :: « will be commented out from the script.

The PAUSE command directs the CMD program to stay open. Pressing any key on your keyboard will close the window.

@ECHO OFF

:: This CMD script provides you with your operating system, hardware and network information.

TITLE My System Info

ECHO Please wait… Gathering system information.

ECHO =========================

ECHO OPERATING SYSTEM

systeminfo | findstr /c:»OS Name»

systeminfo | findstr /c:»OS Version»

ECHO =========================

ECHO BIOS

systeminfo | findstr /c:»System Type»

ECHO =========================

ECHO MEMORY

systeminfo | findstr /c:»Total Physical Memory»

ECHO =========================

ECHO CPU

wmic cpu get name

ECHO =========================

ECHO NETWORK ADDRESS

ipconfig | findstr IPv4

ipconfig | findstr IPv6

PAUSE

Using Scripts to Shut Down Your Computer

Normally, when you shut down your computer, it happens instantaneously. Suppose, however, that you’re listening to an audiobook or watching a training video — and you know that you will fall asleep after an hour. You can use a CMD script to tell your computer to shut itself down, after a specified period of time, using the shutdown command.

When you use the shutdown command, you need to include two additional switches, or subcommands. The first tells the computer to either shutdown or restart. You can use either -s or — r. The second tells the computer how many seconds to wait before performing the command. For this you use -t, followed by the number of seconds.

To shutdown the computer in one second, use: shutdown -s -t 01

To restart the computer in eight seconds, use: shutdown -r -t 08

To shutdown the computer in two hours use: shutdown -s -t 7200

Backing Up Files With a CMD Script

If you find it tedious to back up your files to a second storage device, using a CMD script makes the process a breeze. For this, use the Robocopy command. For example, if you want to back up all of the files in your Documents folder onto a removable storage device, you can write the command in a CMD file and then — at the end of the day — simply double click the file to activate it.

The Robocopy command needs to know, first — which folder you want to copy and, second — where you want the copy placed. Both the source and destination need to be in quotation marks.

If you’re not certain what your drive letters are, open File Explorer and click on «My Computer.»

For example, if your User name is MyName, your Documents folder is in your C: drive and your Backup folder is in a removable storage D: drive, then the command would be:

robocopy D:\Users\MyName\Documents F:\Backup /XA:H /W:0 /R:1 > F:\Backup\backup.log

This example is a bit more complicated, since Robocopy offers you a lot of options.

D:\Users\MyName\Documents: the folder you want to back up.

F:\Backup: the location of your Backup folder.

/XA:H: ignores hidden files.

/W:0: waits zero seconds between retries, instead of the default 30 seconds.

/R:1: retry only once if the file is locked.

> F:\Backup\backup.log: create a backup log placed in the Backup folder.

Note that because this is a mirror backup, if you delete files from the source folder, they will be deleted from the Backup folder the next time you use the script. It would be a good idea to explore additional switches available for Robocopy, so that you ensure that you backup your files the way that works best for you.

Как писать скрипты на BATCH? 🤔

Все на самом деле проще, чем кажется. 😉

Вывод текста на экран

@echo off
echo It's my the first script on BATCH!

Вывод:

It’s my the first script on BATCH!

С первого взгляда стало понятно, чтобы вывести текст на экран нужно воспользоваться командой echo.
Но что значит первая строчка @echo off? 🤔 Первая строчка отвечает за отключения «эхо», то есть, другими словами она отключает вывод командной строки. Представим, что вы ее не записали, и вот что у вас получится:

echo It’s my the first script on BATCH!
It’s my the first script on BATCH!

У вас отобразятся команды, которые вы записали в ваш скрипт, а потом их результат.

Комментарии, кодировка и перенос строки

Комментарии

Комментарии в коде чаще всего создаются, для описания какой-либо строчки или какого-либо блока кода.
Имеется несколько способов оставить комментарий:

@rem Смотри какой красивый комментарий
rem А как тебе этот комментарий?
:: И даже так можно!

Разницы не будет как вы это сделаете, комментарий не читается при исполнении скрипта — он только для вас.

Кодировка

Допустим вы захотели вывести текст в консоль, который написан кириллицей, но при выводе возникает проблема? Что это за символы?!
Для этого следует указать интернациональную кодировку UTF-8:

@echo off
@rem chcp *сюда код кодировки* (65001 это UTF-8)
chcp 65001

echo Привет, кириллица!

Перенос строк

Если у вас в коде имеется длинная строка, которую вы хотите перенести на другую строчку, чтобы визуально это смотрелось красиво и удобно, можно воспользоваться символом ^:

@echo off
chcp 65001

echo У меня есть очень большой текст, который по сути бессмысленный и я придумываю этот текст на ходу, ^
в прямом эфире и совершенно не важно, что здесь написано. С помощью ёлочки вверх, вы сможете перенести текст ^
на следующую строку и это очень просто работает, но если вывести этот текст в консоль, он будет идти в строчку.

А что, если вы хотите вывести текст выше также, как это было и в коде? Эти ^ ёлочки не способны такого сделать, и тут можно сделать такую штуку:

@echo off
chcp 65001

set "n=&echo."
echo Это можно сказать простая табуляция.%n%Точнее обычная переменная,^
которая может спокойно перенести строчку на следующую.%n%^
Переменные мы разберем в следующей главе.

Переменные

В BATCH переменные бывают глобальные 🔓 и локальные 🔒, изначально они все глобальные, а также их несколько видов.
Глобальные переменные можно использовать повсюду, в скрипте, другом bat-файле, но только в текущей сессии. Что такое текущая сессия? 🤔 Простыми словами это открытая консоль в данный момент. Давайте разбираться, но для начала посмотрим, как можно создать самую простую переменную.

set variable_name=Simple variable

Любая переменная создается с ключевого слова set, дальше можно указать тип переменной (необязательно), после обозвать её. Значения переменной указываются после символа = без пробелов. Обычная переменная может содержать только строку (string).

@echo off
@rem Моя первая переменная, и сейчас я ее выведу на экран.

set text=Hello, world!
echo %text%

Вывод:

Hello, world!

Как вы наверное догадались, чтобы получить значение переменной, нужно обернуть название переменной в символы %.
Другой вид переменной, числовой.

С такой переменной можно проводить математические операции:

@echo off
@rem Как мне сложить два числа?

set /a number=2021 + 1
echo New %number% year

Вывод:

New 2022 year

Также можно создать две разных переменных и сложить их воедино.

@echo off

set /a number1=100
set /a number2=899
set /a result=number1 + number2

echo %number1% + %number2% = %result%

Вывод:

100 + 899 = 999

Давайте расмотрим еще один вид переменной.

@echo off

set /p input=Enter some text: 
echo %input%

Вход:

script запускаем файл
Enter some text: Don’t worry, smile!

Вывод:

Don’t worry, smile!

example

Такая переменная может принимать в себя данные, которые вы передадите.
Имеется еще один интересный вид переменной, она называется переменной аргумента.
Обозначается она таким образом: %1 %2 %3...

Вход:

script Something

Вывод:

Something

example

Когда мы запускаем наш bat-файл из консоли, мы можем передать любой аргумент после его названия: script Something.
script — название нашего файла, Something — наш желаемый аргумент. Если мы попытаемся передать несколько слов (аргументов) через пробел, то у нас засчитает только первое слово. То есть каждое новое слово по сути является новым аргументом.

Вход:

script Everything will be fine…

Вывод:

Everything

Этого можно избежать следующими способами:

  1. Указать больше переменных.
  2. Обернуть текст в кавычки " "
  3. Указать символ *
Способ первый:

Я хочу передать вот этот текст: Everything will be fine.... Здесь 4 слова (необязательно слова, после каждого нового пробела получается новый аргумент)

@echo off
echo %1 %2 %3 %4

Вход:

script Everything will be fine…

Вывод:

Everything will be fine…

Второй способ:

В этом способе я оберну текст в кавычки " "

Вход:

script «Everything will be fine…»

Вывод:

«Everything will be fine…»

Третий способ:

Вход:

script Everything will be fine…

Вывод:

Everything will be fine…

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

@echo off

set /a value=%1
echo %value%

Вход:

script 12+12

Вывод:

24

example

Локальные переменные

Локальные переменные задаются в блоке от setLocal до endLocal. Такими переменными нельзя воспользоваться за пределами блока, и также они недоступны в сессии, как глобальные.

@echo off

set global_variable=I'm Global Elite

setLocal
set local_variable=I'm... I.. nobody?...
endLocal

Попробуйте запустить этот скрипт, а после прописать в консоли echo %global_variable%, получилось?
Теперь попробуйте echo %local_variable%. Мм.. нет?
Также глобальными переменными можно пользоваться в других bat-файлах. Попробуйте создать другой файлик и к примеру вывести глобальную переменную на экран.

В принципе все просто.
Практика:

  1. Попробуйте написать скрипт, который будет принимать ваше имя и возраст, после выводить его на экран.
Ваше имя: Даниил
Ваш возраст: 17

Привет, Даниил, а знаю, что тебе 17 лет!
  1. Попробуйте сделать простой калькулятор, который будет только складывать числа.
Введите первое число: 12
Введите второй число: 12

Ответ: 24

Циклы

Цикл for (по умолчанию)

Данный цикл используется для повторения файлов, пример:

@echo off

for %%i in (C:\folder\fantasy.txt C:\folder\myths.txt) do (
  copy %%i C:\Users\user\Desktop
)

example
Разберем начало цикла, цикл создается с ключевого слова for, следующим можно указать вид цикла /r, /d, /f, /l (необязательно). Вид цикла используется в разных ситуациях, в которых вы хотите его применить. Дальше в этом разберемся.
Переменная в цикле начинается с двух символов %%, а после записывается само название (названием переменной должен служить 1 единственный символ). \

В ( ) записываем пути к файлам, с которыми в будущем будем осуществлять работу.
Работа осуществляется в теле цикла, чтобы туда попасть, нужно записать ключевое слово do, открыть скобки () и приступить к написанию скрипта.
В этом случае, мы просто копируем файлы (fantasy.txt, myths.txt) в новую директорию.

Цикл for /R

Данный цикл используется для перебора файлов в директории:

@echo off

for /r C:\folder %%f in (*.txt) do (
  echo %%f
)

example
Здесь мы уже указываем команду /r, следующим можно передать папку, которая будет считаться корневой, если не передавать директорию (C:\folder) — текущая директория будет считаться корневой. Также поиск файлов будет осуществляться и в подпапках.
%%f — является переменной. В скобках ( ), можно передать файлы, по которым будет осуществляться поиск. Их может быть несколько (*.txt *.py *.bat) или можно записать ., она будет искать все файлы в целом (в подпапках тоже).

Цикл for /D

Используется для загрузки списка папок, которые являются подпапками текущей директории:

@echo off

cd C:\folder

for /d %%f in (f* n*) do (
  echo %%f
)

example
В данном примере мы получим список папок в директории C:\folder, которые начинаются с букв f и n. Если передать *, мы получим список всех папок находящихся в директории.

Цикл for /l

Этот цикл служит для загрузки на ряде цифр (range of numbers):

@echo off

for /l %%i in (1, 1, 10) do (
  echo %%i
)

example
В этом примере мы выведим цифры от 1 до 10. \

for /l %%i in (start, step, end) do (
  echo %%i
)
  • start: Первое значение переменной
  • step: После каждого повтора (iteration) значение переменной будет прибавлять ‘step’.
  • end: Последнее значение.

…дописывается

  • Как создать bcd windows 10
  • Как соединить windows 10 и android
  • Как соединить телефон с компьютером через wifi windows 10
  • Как создать bat файл в windows 10 для запуска программы
  • Как соединить airpods с windows