Закрыть программу через bat и 10 (свой скрипт для запуска программ (игр) с высоким приоритетом, очистки папок, форматирования дисков, флешек и т.д.)

* Для справки.

BAT-файл — текстовый файл со списком команд. При его запуске (открытии) — интерпретатор ОС выполняет их одну за одной. Это очень удобно для выполнения повторяющихся задач (например, если вам нужно запускать каждый раз игру с высоким приоритетом, или чистить определенную папку, и др.).

Собственно, в рамках сегодняшней статьи решил исправиться — кратко показать, как их создавать, и дать несколько примеров для решения самых популярных рутинных задач (довольно часто для этого BAT’ники и используют).

Думаю, что многие пользователи смогут слегка до-корректировать мои примеры и создадут для себя вполне рабочие BAT-файлы. 😉

    ускорение ПК

  • Создание BAT файлов: на примерах
  •  → Задать вопрос | дополнить 

Создание BAT файлов

Основы! С чего начать (Вариант 1: проверка пинга)

Первым делом необходимо создать самый обычный (такой же, как вы создаете в блокноте). Достаточно кликнуть правой кнопкой мыши по любому свободному месту на рабочем столе и выбрать в меню (Text Document). 👇

Создаем текстовый документ

Создаем текстовый документ

Название файла у этого текстового документа может быть любым (но лучше использовать англ. символы).

Далее следует открыть этот файл и вписать в него нужные команды. В своем примере я впишу только одну (если вы делаете это впервые — рекомендую повторить ее вместе со мной):

ping ya.ru -t 

Разумеется, файл нужно сохранить. Кстати, вместо можно указать или любой другой адрес (обычно, многие указывают свой игровой сервер, и запускают этот BAT’ник, когда в игре наблюдаются лаги).

Копируем в него нашу команду и сохраняем файл.

Копируем в него нашу команду и сохраняем файл.

Затем обратите внимание на расширение файла — у текстового файла оно “.TXT”. Кстати, если у вас не отображаются расширения — можете 📌 прочитать эту заметку или просто введите в командной строке две вот эти команды (последовательно):

reg add “HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced” /v HideFileExt /t REG_DWORD /d 00000000 /f

taskkill /F /IM explorer.exe & start explorer

Нам нужно переименовать файл так, чтобы вместо — было новое расширение !

Меняем расширение TXT на BAT

Меняем расширение TXT на BAT

Теперь достаточно кликнуть по “нашему” файлу правой кнопкой мыши и запустить его от имени администратора — автоматически появится окно командной строки с проверкой пинга. Удобно? Вполне! 👌

Идет проверка пинга!

Идет проверка пинга!

Чтобы отредактировать BAT-файл (и каждый раз не переименовывать его туда-сюда) — рекомендую вам установить блокнот Notepad++ (уже ранее добавлял его в подборку).

Редактировать BAT

Вариант 2: запуск игры с высоким приоритетом + откл. авто-поиска Wi-Fi сетей

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

Этот BAT-файл я создал на одном своем рабочем ноутбуке (он уже довольно “старый”, и нередко притормаживал при запуске игр). Однако, благодаря нескольким строкам кода — удается вполне комфортно играть. 👌

Что за строки нужно добавить в BAT (выделены коричневым):

cmd.exe /c start /high /D “C:\Games\Counter-Strike 1.6\” hl.exe -game cstrike -appid 10 -nojoy -noipx -noforcemparms -noforcemaccel
netsh wlan set autoconfig enabled=no interface=”Wi-Fi”

netsh wlan set autoconfig enabled=yes interface=”Wi-Fi”

Что он делает:

  1. запускает игру CS с высоким приоритетом (это позволяет снизить кол-во притормаживаний в играх). Разумеется, вместо строки “C:\Games\Counter-Strike 1.6\” hl.exe — вы можете указать свою игру и ее расположение;
  2. отключает авто-поиск Wi-Fi сетей (это снижаем пинг и увел. скорость сети // правда не дает подключаться к другим Wi-Fi сетям). Кстати, вместо — нужно указать название своего адаптера (посмотрите так: нажмите Win+R, и используйте команду );

    Название адаптера

  3. далее идет пауза – скрипт будет ждать нажатия какой-нибудь клавиши (: т.к. у нас будет запущена игра — это окно скроется из вида, и оно не будет нам мешать);
  4. когда через часик-другой игра будет закрыта, — вы увидите окно командной строки и нажмете какую-нибудь клавишу — будет снова включен авто-поиск Wi-Fi сетей. Удобно? 😉

Вариант 3: создание резервной копий файлов и точки восстановления в Windows

Приведу наиболее простую и довольно надежную команду для создания резервных копий файлов и папок:

xcopy C:\Games D:\backup /f /i /y /s

Она копирует один каталог в другой (просто, без вопросов и расспросов). Если вам нужно скопировать 2 или 3 (или более) каталогов — просто создайте несколько подобных строк.

  1.  — тот каталог, который будем копировать (все подкаталоги и файлы из них тоже будут скопированы);
  2.  — тот каталог, куда будет всё скопировано;
  3.  — выводит имена файлов (чтобы вы видели, что происходит);
  4.  — создает новый каталог, если на диске “D:” нет каталога “backup” (см. строку выше);
  5.  — перезаписывает старые файлы новыми;
  6.  — копирует каталоги и подкаталоги, если в них есть какие-то файлы.

Для создания точки восстановления можно использовать следующий код:

wmic.exe /Namespace:\\root\default Path SystemRestore Call CreateRestorePoint “MyRestorePoint”, 100, 7

После запуска подобного BAT-файла — точка восстановления будет создана в авто-режиме! Это очень удобно делать перед установкой нового софта, железа и пр. (чтобы проверить есть ли точка — нажмите , и используйте команду: ). 👇

Если точки нет (как в моем примере ниже) — прочитайте это!

Точки восстановления создаются!

Точки восстановления создаются!

Вариант 4: очистка временных папок

Здесь есть несколько вариантов “подхода”. Я приведу один из самых простейших, см. 4 строки ниже. 😉

del /q /f /s %WINDIR%\Temp\*.*
del /q /f /s %SYSTEMDRIVE%\Temp\*.*
del /q /f /s %Tmp%\*.*
del /q /f /s %Temp%\*.*

📌 Что это означает:

  • BAT-файл с этими строками чистит временные папки в Windows (как правило, в них скапливается один “мусор”, которые занимает лишь место на диске);
  • — это папка “C:\Windows\Temp”;
  •  — это системный диск “C:\”;
  •  — маска для удаления всех файлов;
  • /q /f /s — удаление всех каталогов и подкаталогов (без вопросов).

📌 Что можно еще добавить в наш скрипт:

  • del /q /f /s %WINDIR%\Prefetch\*.* — эта строка очистит папку Prefetch (в ней сохраняется кэш от различного софта. При удалении той или иной программы — кэш в папке остается, и со временем — ее размер может разрастись);
  • del /q /f /s %SYSTEMDRIVE%\*.log — удаление всех Log-файлов с системного диска (это файлы, в которых содержится история запуска программы, например. Во многих случаях они бесполезны). Большинство программ, кстати, ведут логи, со временем они разрастаются и могут отнять сотни МБ на диске;
  • При помощи предыдущей команды можно удалить и другие файлы с системного диска (например, с расширением .tmp или .bak // достаточно поменять лишь концовку команды) — однако, будьте аккуратны, легко можно что-нибудь запороть!

📌 Вариант 5: форматирование диска/флешки (с ручным выбором буквы, имени и файловой системы) 

Этот мини-скриптик может быть весьма полезный (например, если у вас “подвисает” проводник при обращении к флешки // или не запускается управление дисками).

Собственно, здесь все делается аналогично. Чтобы не удлинять процесс — вот вам сразу же сам скриптик (ссылка на RAR-архив с BAT-файлом), который “набросал” за 5 мин. (и еще 10 потратил на проверку 😉). Его текст (выделен коричневым):

if “%number%” == “1” (
format %adisk%: /FS:NTFS /Q /V:%named%

if “%number%” == “2” (
format %adisk%: /FS:FAT32 /Q /V:%named%

if “%number%” == “3” (
format %adisk%: /FS:ExFAT /Q /V:%named%

Как он работает (запускать под именем администратора):

  1. сначала он показывает информацию по всем подключенным дискам (и их буквы);
  2. далее запрашивает букву диска/флешки, которую нужно отформатировать (в своем примере я ввел и нажал Enter);
  3. затем нужно ввести название диска — может быть любым (главное, чтобы название было коротким и лучше использовать только латиницу!). Я использовал ;
  4. после выбрать файловую систему (их тут три), и нажать Enter;
  5. если все введено корректно — диск/флешка будет отформатирована! 👌

Пример работы BAT-файла

Пример работы BAT-файла для форматирования флешки

Как запускать BAT-файл от имени администратора (и по расписанию)

Самый простой вариант — нажать ПКМ по BAT-файлу и в контекстном меню выбрать “Запуск от имени администратора”. См. скрин ниже. 👇

Нажать ПКМ по BAT-файлу

Нажать ПКМ по BAT-файлу

Можно нажать ПКМ по BAT-файлу и создать для него ярлык на рабочем столе. См. скрин ниже. 👇

Создание ярлыка к BAT-файлу

Создание ярлыка к BAT-файлу

Далее в свойства ярлыка поставить галочку, что задача должна выполняться от имени администратора. Таким образом при каждом двойном клике по этому ярлыку — BAT’ник будет запускаться от админа. 👌

Свойства ярлыка — запускать с админ. правами

Свойства ярлыка — запускать с админ. правами

В планировщике заданий Windows (чтобы его открыть нажмите , и используйте команду ) можно настроить запуск BAT-файла в нужное время и с нужными правами (т.е. автоматически). Это может быть весьма удобно, и серьезно упростить работу со множеством задач (очистка Windows от мусора, создание бэкапов и пр.) — точно никогда не забудете!

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

Триггеры - когда выполнять задачу, расписание

Триггеры – когда выполнять задачу, расписание

Если при выполнении BAT-файла появятся крякозабры вместо русского текста 👌

Что можно сделать:

  1. : попробуйте в начало BAT-файла добавить код  (и сохраните файл!);
  2. : установите блокнот Notepad++ и задействуйте OEM-866 кодировку в меню: (предварительно, для бэкапа, скопируйте весь текст текущего документа в другой файл).

OEM 866 — пример, что нужно включить

OEM 866 — пример, что нужно включить // программа Notepad++

👉 Доп. в помощь!

Вместо текста иероглифы, квадратики и крякозабры (в браузере, Word, тексте, окне Windows).

Дополнения по теме – приветствуются!

donate

dzen-ya

Команда START – запуск указанной программы или команды в отдельно окне

START

Формат командной строки:

Для получения справочной информации используется команда start /?

Параметры командной строки:

“заголовок” – заголовок окна. Обязательно в двойных кавычках.

путь – рабочий каталог для запускаемого приложения.

B – запуск приложения без создания нового окна с отключением обработки сочетания клавиш CTRL+C. Если приложение не обрабатывает сочетание клавиш CTRL+C самостоятельно,
единственным способом его прерывания является использование сочетания клавиш CTRL+Break.

I – Новой средой станет исходная среда, переданная cmd.exe, а не текущая среда.

MIN – Запуск команды/программы в свернутом окне.

MAX – Запуск команды/программы в развернутом окне.

SEPARATE – Запуск 16-разрядной программы Windows в отдельной области памяти.

LOW – Запуск приложения с приоритетом IDLE (самый низкий приоритет).

NORMAL – Запуск приложения с приоритетом NORMAL.

HIGH – Запуск приложения с приоритетом HIGH.

REALTIME – Запуск приложения с приоритетом REALTIME (самый высокий приоритет).

NODE – Указывает предпочтительный узел NUMA в качестве десятичного целого числа.

AFFINITY – Содержит маску сходства процессора в виде шестнадцатеричного числа. Процесс будет выполняться только на этих процессорах. Маска сходства интерпретируется по-разному при совмещении параметров /AFFINITY и /NODE. Укажите маску сходства таким образом, как если бы маска процессора узла NUMA сдвинута вправо и начинается на нулевом бите. Выполнение этих процессов ограничено процессорами, общими для указанной маски сходства и узла NUMA. Если общих процессоров не существует, то выполнение процесса ограничено указанным узлом NUMA.

WAIT – Запуск приложения с ожиданием его завершения.

ABOVENORMAL – Запуск приложения с классом приоритета ABOVENORMAL (выше стандартного)

BELOWNORMAL – Запуск приложения с классом приоритета BELOWNORMAL (ниже стандартного)

команда/программа – Если это внутренняя команда cmd.exe или пакетный файл, обработчик команд (cmd.exe) запускается с ключом /K. Это означает, что окно не будет
закрыто после завершения команды. Если это не внутренняя команда cmd.exe и не пакетный файл, значит, это программа, которая будет запущена в графическом или текстовом окне.

параметры – Параметры, передаваемые команде/программе.

Параметры для мультипроцессорных систем /NODE и /AFFINITY не поддерживаются в операционной системе Windows Vista и более ранних версиях ОС Windows.

Указание параметра /NODE позволяет создавать процессы таким образом, чтобы
использовать память в системах NUMA. NUMA (Non-Uniform Memory Access — «Неравномерный доступ к памяти» или Non-Uniform Memory Architecture — «Архитектура с неравномерной памятью») — технология, используемая в многопроцессорных системах, использующих общую память. Технология NUMA впервые была реализована в процессорах Intel Xeon. Архитектура системы с NUMA – это множественные узлы, имеющие доступ как к своей локальной памяти, так и к памяти других узлов. Формально память разделяется на быструю локальную и относительно медленную удаленную (поэтому память и “неравномерная”).
Например, два процесса, которые взаимодействуют друг с другом через общую память, могут совместно использовать один и тот же предпочтительный узел NUMA для минимизации задержки памяти. Память выделяется из одного узла NUMA по возможности, что позволяет процессам
выполняться на процессорах вне указанного узла.

start /NODE 1 application1.exe

start /NODE 1 application2.exe

Эти процессы можно ограничить для выполнения на определенных процессорах в
одном узле NUMA. В следующем примере приложение application1 выполняется
на низкоприоритетных процессорах узла, а приложение application2 выполняется
на двух следующих процессорах узла. В этом примере предполагается, что
указанный узел имеет минимум четыре логических процессора. Обратите внимание
на то, что номер узла можно изменить на другой действительный номер для
компьютера без изменения маски сходства.

start /NODE 1 /AFFINITY 0x3 application1.exe

start /NODE 1 /AFFINITY 0xc application2.exe

Применительно к стандартным однопроцессорным, но многоядерным процессорам, практическое применение параметров /NODE и /AFFINITY заключается в возможности запуска приложений на конкретных ядрах CPU. Параметр /NODE для однопроцессорных систем всегда равен нулю, а параметр /AFFINITY определяют битовую маску выбора процессорных ядер. Подробнее – в примерах ниже.

Для вызова неисполняемых файлов через механизм сопоставления типов файлов
достаточно просто ввести имя файла в командной строке. Например, команда

приведет к запуску текстового редактора NOTEPAD с открытием файла MYFILE.TXT.
Сведения о создании подобных сопоставлений из командных файлов приведены
в описаниях команд ASSOC и FTYPE.

При запуске приложения с графическим интерфейсом пользователя
обработчик команд CMD.EXE не ожидает завершения работы приложения перед
возвратом к приглашению командной строки. Подобное новое поведение НЕ
относится к запуску приложений из пакетных файлов.

При выполнении командной строки, первым элементом которой является текстовая
строка “CMD” без расширения имени файла или указания пути, она заменяется
значением переменной COMSPEC. Это предотвращает запуск CMD.EXE из
текущей активной папки, если таковая программа там имеется.

Если первый элемент командной строки не содержит расширения имени файла,
обработчик команд CMD.EXE использует значение переменной среды PATHEXT,
чтобы определить расширения имен исполняемых файлов и порядок поиска
нужного файла. По умолчанию для переменной PATHEXT задается
значение:

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

Если при поиске исполняемого файла нет соответствия ни одному из расширений,
выполняется проверка соответствия указанного имени папки. Если имя папки
соответствует указанному, то команда START запускает EXPLORER для этого
пути. Если такое действие выполняется из командной строки, то оно
эквивалентно выполнению команды CD /D для указанного пути. Так, например, команда

откроет папку C:\windows в окне проводника.

start /? – выдать справку об использовании команды.

start – при запуске без параметров будет открыто новое окно интерпретатора команд CMD.

start “My new CMD window” – как и в предыдущем случае, выполнится запуск CMD в новом окне, но в качестве заголовка окна будет отображаться текст My new CMD window

start devmgmt.msc – выполнится запуск по расширению .msc диспетчера устройств Windows.

start http://google.com – выполнится запуск обозревателя Интернет и откроется страница поисковика Google.

start /min notepad.exe – выполнится запуск блокнота в свернутом окне.

start “Backup Files” /min /belownormal mybackup.bat – запуск командного файла в свернутом окне с пониженным приоритетом.

start /abovenormal /MAX winword.exe – запуск редактора Microsoft Word в новом окне, развернутом на весь экран и с повышенным приоритетом.

start “” /high /MAX “C:\Program Files\Good game\MyGame” – запуск программы MyGame с высоким приоритетом.

Управление приоритетами удобно использовать для обеспечения комфортной работы пользователя с интерактивными приложениями на фоне выполнения длительных расчетных задач. Так, например при равных приоритетах редактора MS Word, и расчетной задачи, потребляющей значительную долю ресурсов центрального процессора, может возникнуть эффект подвисаний при работе с текстовым документом. Снижение же приоритета расчетной задачи создаст нормальные условия для работы пользователя, который практически не заметит никакого влияния на работе с документами, поскольку расчетная задача будет в основном выполняться на фоне режима ожидания редактора MS Word. Аналогичным образом можно добиться комфортной работы с интерактивными приложениями с одновременным выполнением ресурсоемких расчетных задач – либо повышая приоритет первых, либо занижая приоритет вторых.

Обратите внимание на то что заголовок окна можно опускать, но
особенность обработки входных параметров командой start может привести к
неожиданным результатам при попытке запуска программы, имя или путь которой содержит
пробел(ы). Например, при попытке выполнить следующую команду:

start “C:\Program Files\FAR\FAR.EXE”

Из-за наличия пробела в пути к исполняемому файлу,
строка для запуска FAR.EXE должна быть заключена в двойные
кавычки, однако формат входных параметров для start предполагает обязательное наличие заголовка окна, также заключаемого в двойные кавычки, в результате чего “C:\Program Files\FAR\FAR.EXE” интерпретируется не как исполняемая программа, а как заголовок окна, и команда START выполнит запуск интерпретатора CMD с заголовком окна “C:\Program Files\FAR\FAR.EXE” . Для того, чтобы подобного не случилось нужно
использовать любой, пусть даже пустой, заголовок:

start “” “C:\Program Files\FAR\FAR.EXE”

При выполнении запуска командных файлов с помощью команды start, окно интерпретатора команд (cmd.exe) запускается с параметром /K, т. е. после
выполнения команд в командном файле завершения cmd.exe не происходит. Например, имеется командный файл test.bat следующего содержания:

Команда START кроме всего прочего, позволяет распределять процессорные ядра между запускаемыми приложениями. Иногда это позволяет решить проблему невозможности запуска устаревших приложений, разработанных еще во времена одноядерных систем. Например, старые игры, которые не запускаются с выдачей ошибки типа negative delta time, или зависают с искажением изображения или звука. Подобное наблюдается в некоторых модах S.T.A.L.K.E.R Shadow Of Chernobyl, когда могут возникать зависания при старте программы и при отображении основного меню игры. Запуск игры на одном ядре процессора, как правило, решает эти проблемы.

Для однопроцессорных систем параметр /NODE равен нулю, а параметр /AFFINITY определяют битовую маску для выбора ядер процессора:

0x1 – первое ядро.

0x2 – второе ядро.

0x4 – третье ядро.

0x8 – четвертое ядро.

И так далее. Например, для запуска приложения Блокнот (notepad.exe) на третьем ядре процессора (битовая маска – 0100, или 4 в шестнадцатеричной системе счисления) нужно выполнить команду:

start /node 0 /affinity 0x4 notepad.exe

Для запуска приложения на первом и четвертом ядре (битовая маска – 1001, или 9 в шестнадцатеричной системе счисления):

start /node 0 /affinity 0x9 notepad.exe

Для выбора 2-го, 3-го и 4-го ядер – двоичная маска равна 1110 или числу 0xE в шестнадцатеричном виде.

start /node 0 /affinity 0xE notepad.exe

Для большинства версий команды START, параметр /NODE по умолчанию равен нулю и его можно не задавать:

start /affinity 0xE notepad.exe

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


Весь список команд CMD Windows

Общие сведения о командном процессоре Windows.

Использование переменных в командных файлах.

Передача параметров командному файлу.

Переходы и метки.

Примеры командных файлов:

    – Своя команда для создания новых файлов.

    – Присвоение съемному диску одной и той же буквы.

    – Создание архива, имя которого содержит дату и время.

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

    – Пример создания архива каталога пользователя.

    – Изменение даты и времени для файлов и папок.

    – Запуск и остановка служб Windows в командной строке.

    – Выдача на экран значения ERRORLEVEL.

    – Диалог с пользователем.

    – Задержки в командных файлах.

    – Определение текущей версии Windows.

    – Поиск в локальной сети компьютеров с запущенным приложением.

    – Поиск компьютеров с запущенным приложением по списку на основе сетевого окружения.

    – Выключение компьютеров по списку, созданному на основе сетевого окружения.

    – Поиск в локальной сети включенных компьютеров.

    – Работа с дисками, файлами и каталогами.

    – Работа с графическими приложениями из командной строки.

    – Перекодировка текстовых файлов .

    – Часто встречающиеся ошибки при написании командных файлов.

Общие сведения о командном процессоре Windows.

   
Командные файлы (пакетные файлы, скрипты, сценарии, ”батники”) – это обычные текстовые файлы с расширением .bat или .cmd, строки которых представляют собой специальные команды командного процессора (интерпретатора команд ) и/или имена исполняемых файлов с параметрами. Командный процессор – это специальная программа, являющаяся обязательным элементом практически любой операционной системы, главным назначением которой, является предоставление пользователю возможности выполнения определенных программ без их компиляции и создания исполняемых файлов. Для операционных систем DOS и Windows9X в качестве интерпретатора команд использовался командный процессор command.com, для всех остальных ОС семейства Windows ( NT/2k/XP/Vista/7/8/10 и старше) – cmd.exe.

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

Современная реализация командного процессора CMD кроме классического применения, позволяет также использовать возможности Инструментария управления Windows (WMI –Windows Management Instrumentation), сценарии Windows Script Host (WSH) и даже оболочки (shell) операционных систем Linux без установки стороннего программного обеспечения, поскольку в современных Windows, начиная с Windows 10, в качестве стандартного компонента системы может применяться Подсистема Windows для Linux (WSL – Windows Subsystem for Linux), что позволяет объединять в командных файлах исходные тексты CMD и, например, – bash.
   
Как уже упоминалось выше, командный файл – это обычный текстовый файл с набором команд, которые последовательно выполняются командным процессором CMD Windows (cmd.exe). Командный процессор последовательно считывает и выполняет команды, которые представляют собой своеобразную программу, реализующую определенный алгоритм. Естественно, как и в любой другой среде программирования, программирование в командной строке подчиняется определенным правилам и командные файлы должны им полностью соответствовать.

Команды CMD

Строки командных файлов могут содержать как команды самого
процессора команд CMD, так и имена исполняемых модулей (программ или командных файлов).

– исполняемый файл ping.exe с параметром yandex.ru. Расширение .exe можно не указывать, и данная команда может быть записана так:

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

Справочную информацию по конкретной команде можно получить, указав ее название в качестве параметра команды HELP:

HELP Имя команды

В русифицированной версии Windows необходимо учитывать, что в среде командного процессора символы национального алфавита отображаются в DOS-кодировке, в соответствии с кодовой страницей (code page) 866. При необходимости, для переключения между кодовыми страницами Windows и DOS используется команда

CHCP номер страницы
– использовать кодовую страницу 866 (DOS)
– использовать кодовую страницу 1251 (WINDOWS)

Внешний вид окна CMD.EXE (консоли Windows) можно изменить с помощью команды

В качестве аргументов для команды используются 2 шестнадцатеричные цифры, задающие цвет фона и цвет символа.

– символы белого цвета на черном фоне (используется по умолчанию).

– черные символы на белом фоне.

– светло-желтые символы на черном фоне.

– подсказка для команды COLOR.

Специальные символы CMD

Работа с командным процессором предполагает использование двух стандартных устройств – устройства ввода (клавиатура) и устройства вывода (дисплей). Однако, имеется возможность изменить стандартно используемые устройства ввода-вывода с помощью специальных символов – символов перенаправления

– перенаправление вывода
– перенаправление ввода

Для вывода справки не на экран а, например, в файл с именем help.txt, можно использовать следующую команду:

HELP > help.txt
При выполнении данной команды, в текущем каталоге будет создан файл с именем help.txt, содержимым которого будет результат вывода команды HELP. Если файл help.txt существовал на момент выполнения команды, его содержимое будет перезаписано. Для того, чтобы дописать данные в конец существующего файла, используют удвоение символа перенаправления вывода – “>>”

HELP GOTO > myhelp.txt – в файл myhelp.txt будет выдана справка по использованию команды GOTO
HELP COLOR >> myhelp.txt – в конец файла myhelp.txt будет дописана справка по использованию команды COLOR

Простейший пример перенаправления ввода:

cmd.exe < commands.txt – командный процессор не будет ожидать ввода команд с клавиатуры, а считает их из файла commands.txt. Фактически, указанный текстовый файл в данном случае является командным файлом.

   
При запуске командного процессора можно указать конкретную команду в качестве аргумента командной строки:

cmd.exe /C HELP FOR – выполнить команду HELP FOR и завершиться (параметр командной строки или ключ /C)

cmd.exe /K HELP FOR – выполнить команду HELP FOR и перейти в режим ожидания дальнейшего ввода команд (ключ /K)

Подробную справку по использованию cmd.exe можно получить, введя в качестве аргумента ключ /?

& – одиночный амперсанд используется для разделения нескольких команд в одной командной строке.

команда1 & команда2 – выполняется первая команда, затем вторая команда.

&& – удвоенный амперсанд между двумя командами, означающий условное выполнение второй команды. Она будет выполнена, если код завершения (или код возврата) первой команды равен нулю, т.е. команда выполнена успешно. Успешность
выполнения команды определяется значением специальной переменной среды ERRORLEVEL.

команда1 && команда2 – выполняется команда1, а команда2 выполняется, только если первая была выполнена успешно.

Команду, следующую после знаков объединения, не нужно заключать в
двойные кавычки, иначе командный процессор удвоит их и сообщит об ошибке.
Выполнение командной строки

cmd.exe /C “HELP IF” & ”HELP IF”

Завершится выполнением первой команды и сообщением об ошибке для второй:


“”HELP” не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Как и в любом другом языке программирования, в сценариях CMD невозможно обойтись без переменных. Для получения их значения применяется специальный символ – знак процента % . Строка, заключенная в знаки процента интерпретируется как значение переменной, например:

Символ ^ , являющийся последним символом строки, используется как признак продолжения предыдущей. Это относится как к тексту, так и к командам.

Использование переменных окружения в командных файлах.

   
При работе с командными файлами невозможно обойтись без переменных окружения (environments) – переменных, значения которых определяют среду, в которой выполняются команда или пакетный файл. Часто их называют переменными среды. Значения, принимаемые этими переменными формируются при
загрузке Windows, регистрации пользователя в системе, старте или завершении
некоторых приложений, и, кроме того, могут быть заданы с помощью специальной
команды
SET переменная = значение

SETX переменная = значение

Первая присваивает значение переменной, действующее до завершения текущей сессии командной строки. Вторая – значение, действующее постоянно.

Как уже упоминалось выше, значение, присвоенное какой-либо переменной, доступно для обработки в командной строке или в командном файле с использованием ее имени, заключенного в знаки процента – % . Системные переменные позволяют получить сведения об аппаратной и программной среде, в которой выполняется командный файл, что позволяет реализовать его исполнение на разных компьютерах, независимо от их конкретной конфигурации и пользовательских настроек. Например, в командном файле используется вывод содержимого системного каталога C:\Windows :

DIR C:\Windows

Алгоритм, реализуемый данным командным файлом, будет прекрасно выполняться до тех пор пока не встретится компьютер с Windows установленной не на диск C:, а например, на D:. Чтобы этого не происходило, желательно использовать системную переменную WINDIR, принимающую значение пути системного каталога:

На практике, с помощью команды SET обычно задается и модифицируется путь поиска исполняемых программ
– переменная окружения PATH.

SET PATH=C:\Windows; C:\windows\system32
Данная команда определяет, что поиск исполняемых файлов будет выполняться в
каталоге C:\Windows и, если результат неуспешен, в
C:\windows\system32

При необходимости выполнить программу, например, myedit.exe, размещенную в
каталоге C:\NewProgs необходимо либо указать полный путь исполняемого файла, либо сделать текущим каталогом каталог с программой и использовать только его имя. Если в командной строке не задан полный путь, а только имя
исполняемого файла – myedit.exe

то сначала будет выполняться поиск файла myedit.exe в текущем каталоге, и если
он не будет найден – в каталогах, список которых определяется значением переменной
PATH. Символ ; является разделителем элементов в списке путей поиска.
Если в приведенном примере, текущим каталогом не является
C:\NewProgs, и в остальных каталогах, заданных значением переменной
PATH, нет исполняемого файла myedit.exe, то попытка его запуска
завершится ошибкой. Однако, если модифицировать значение переменной PATH, добавив в нее требующийся каталог, то указание полного пути исполняемого файла становится необязательным.
Команда


изменит текущее значение PATH,
добавив каталог C:\NewProgs в начало списка. Для добавления каталога в конец списка используется несколько иная конструкция:

SET PATH=%path%; C:\NewProgs

   
Выполнение команды SET без параметров позволяет получить текущие
значения переменных окружения:


NUMBER_OF_PROCESSORS=1 – количество процессоров

OS=Windows_NT- тип ОС

Path=C:\WINDOWS\system32; C:\WINDOWS;C:\Program Files\Far – путь поиска исполняемых файлов.

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE; .JS;.JSE;.WSF;.WSH – расширения для исполняемых файлов.

PROCESSOR_ARCHITECTURE=x86 – архитектура процессора.

PROCESSOR_IDENTIFIER=x86 Family 6 Model 8 Stepping 1, AuthenticAMD – идентификатор процессора.

PROCESSOR_LEVEL=6 – уровень (номер модели) процессора.

PROCESSOR_REVISION =0801 – версия процессора.

ProgramFiles=C:\Program Files – путь к папке “Program Files”

PROMPT=$P$G – формат приглашения командной строки $P – путь для текущего каталога $G – знак “>”.

SystemDrive=C: – буква системного диска.

SystemRoot= C:\WINDOWS – каталог ОС Windows.

Значения некоторых переменных по команде SET не отображаются, хотя и присутствуют в системе. В основном, это переменные, принимаемые значения которых динамически изменяются:


%CD% – Принимает значение строки текущего каталога.

%DATE% – Принимает значение текущей даты.

%TIME% – Принимает значение текущего времени.

%RANDOM% – Принимает значение случайного десятичного числа в диапазоне 1 -32767.

%ERRORLEVEL% – Принимает текущее значение кода завершения задачи ERRORLEVEL

%CMDEXTVERSION% – Принимает значение версии командного процессора CMD.EXE для расширенной обработки команд.

%CMDCMDLINE% – Принимает значение строки, которая вызвала
командный процессор.

Значения, принимаемые переменными окружения, могут быть расширены с помощью
специального признака – символа ” ~ “, что позволяет получить их частичное
значение, или изменить его подменой какой-либо части. Практические примеры использования расширений переменных будут рассмотрены ниже.

Подробное описание команд с примерами их использования имеется в разделе Список команд CMD Windows.

Передача параметров командному файлу.

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


params.bat FIRST second “two words”

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

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

REM пробел текст
Строки, начинающиеся с REM пробел, считаются комментариями и командным процессором игнорируются.

:/>  Что делать если виндовс блокирует установку программы

Оставьте комментарий