Пакетный скрипт - Краткое руководство

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

Некоторые из функций Batch Script:

  • Может читать вводимые пользователем данные для дальнейшей обработки.

  • Имеет структуры управления, такие как переключение if, while, для лучшей автоматизации и написания сценариев.

  • Поддерживает расширенные функции, такие как функции и массивы.

  • Поддерживает регулярные выражения.

  • Может включать другие программные коды, такие как Perl.

Некоторые из распространенных применений Batch Script:

  • Настройка серверов для разных целей.

  • Автоматизация служебных действий, таких как удаление ненужных файлов или файлов журналов.

  • Автоматизация развертывания приложений из одной среды в другую.

  • Установка программ сразу на разные машины.

Пакетные сценарии хранятся в простых текстовых файлах, содержащих строки с командами, которые выполняются последовательно, одна за другой. Эти файлы имеют специальное расширение BAT или CMD. Файлы этого типа распознаются и выполняются через интерфейс (иногда называемый оболочкой), предоставляемый системным файлом, называемым интерпретатором команд. В системах Windows этот интерпретатор известен как cmd.exe.

Запуск командного файла - это простой вопрос, просто щелкнув по нему. Пакетные файлы также можно запускать в командной строке или в строке Start-Run. В таком случае необходимо использовать полное имя пути, если путь к файлу не находится в среде пути. Ниже приводится простой пример пакетного сценария. Этот пакетный сценарий при запуске удаляет все файлы в текущем каталоге.

:: Deletes All files in the Current Directory With Prompts and Warnings
::(Hidden, System, and Read-Only Files are Not Affected)
:: @ECHO OFF
DEL . DR

В этой главе объясняется среда, связанная с пакетным скриптом.

Написание и исполнение

Обычно для создания командного файла используется блокнот. Это самый простой инструмент для создания командных файлов. Далее следует среда выполнения для пакетных сценариев. В системах Windows это делается через командную строку или cmd.exe. Все командные файлы запускаются в этой среде.

Ниже приведены различные способы запуска cmd.exe.

Method 1 - Перейдите в C: \ Windows \ System32 и дважды щелкните файл cmd.

Method 2 - С помощью команды запуска - на следующем снимке показано, как найти командную строку (cmd.exe) на сервере Windows 2012.

После запуска cmd.exe вы увидите следующий экран. Это будет ваша среда для выполнения ваших пакетных сценариев.

Переменные среды

Чтобы запускать командные файлы из командной строки, вам нужно либо перейти в место, где хранится командный файл, либо вы можете указать местоположение файла в переменной среды path. Таким образом, предполагая, что командный файл хранится в этом месте C:\Application\bin, вам нужно будет следовать этим инструкциям для включения переменной PATH.

Операционные системы Вывод
Windows Добавить строку; C:\Application\binв конец системной переменной PATH.

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

S.No Команды и описание
1 VER

Эта пакетная команда показывает используемую вами версию MS-DOS.

2 АССОК

Это пакетная команда, которая связывает расширение с типом файла (FTYPE), отображает существующие ассоциации или удаляет ассоциацию.

3 CD

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

4 CLS

Эта пакетная команда очищает экран.

5 КОПИРОВАТЬ

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

6 DEL

Эта пакетная команда удаляет файлы, а не каталоги.

7 DIR

Эта пакетная команда выводит список содержимого каталога.

8 СВИДАНИЕ

Эта пакетная команда помогает найти системную дату.

9 ЭХО

Эта пакетная команда отображает сообщения или включает или выключает эхо команды.

10 ВЫХОД

Эта пакетная команда закрывает консоль DOS.

11 MD

Эта пакетная команда создает новый каталог в текущем месте.

12 ПЕРЕЕХАТЬ

Эта пакетная команда перемещает файлы или каталоги между каталогами.

13 ПУТЬ

Эта пакетная команда отображает или устанавливает переменную пути.

14 ПАУЗА

Эта пакетная команда запрашивает пользователя и ожидает ввода строки ввода.

15 НЕЗАМЕДЛИТЕЛЬНЫЙ

Эта пакетная команда может использоваться для изменения или сброса приглашения cmd.exe.

16 RD

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

17 REN

Переименовывает файлы и каталоги

18 REM

Эта пакетная команда используется для замечаний в пакетных файлах, предотвращая выполнение содержимого примечания.

19 НАЧАЛО

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

20 ВРЕМЯ

Эта пакетная команда устанавливает или отображает время.

21 год ТИП

Эта пакетная команда выводит на печать содержимое файла или файлов.

22 VOL

Эта пакетная команда отображает метки томов.

23 АТРИБ

Отображает или устанавливает атрибуты файлов в каталоге curret

24 CHKDSK

Эта пакетная команда проверяет диск на наличие проблем.

25 ВЫБОР

Эта пакетная команда предоставляет пользователю список параметров.

26 CMD

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

27 КОМП

Эта пакетная команда сравнивает 2 файла по размеру файла.

28 КОНВЕРТИРОВАТЬ

Эта пакетная команда преобразует том из файловой системы FAT16 или FAT32 в файловую систему NTFS.

29 ЗАПРОС ВОДИТЕЛЯ

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

30 РАСШИРЯТЬ

Эта пакетная команда извлекает файлы из сжатых CAB-файлов.

31 год НАХОДИТЬ

Эта пакетная команда ищет строку в файлах или на входе, выводя совпадающие строки.

32 ФОРМАТ

Эта пакетная команда форматирует диск для использования файловой системы, поддерживаемой Windows, такой как FAT, FAT32 или NTFS, тем самым перезаписывая предыдущее содержимое диска.

33 ПОМОГИТЕ

Эта пакетная команда показывает список команд Windows.

34 IPCONFIG

Эта пакетная команда отображает конфигурацию IP Windows. Показывает конфигурацию по соединению и имени этого соединения.

35 год МЕТКА

Эта пакетная команда добавляет, устанавливает или удаляет метку диска.

36 БОЛЬШЕ

Эта пакетная команда отображает содержимое файла или файлов по одному экрану за раз.

37 СЕТЬ

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

38 ПИНГ

Эта пакетная команда отправляет "эхо-пакеты" ICMP / IP по сети на указанный адрес.

39 НЕИСПРАВНОСТЬ

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

40 СОРТИРОВАТЬ

Эта пакетная команда принимает входные данные из исходного файла и сортирует его содержимое в алфавитном порядке, от А до Я или от Я до А. Вывод выводится на консоль.

41 год SUBST

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

42 СИСТЕМНАЯ ИНФОРМАЦИЯ

Эта пакетная команда показывает конфигурацию компьютера и его операционной системы.

43 год ТАСККИЛЛ

Эта пакетная команда завершает одну или несколько задач.

44 СПИСОК ЗАДАНИЙ

Эта пакетная команда перечисляет задачи, включая имя задачи и идентификатор процесса (PID).

45 XCOPY

Эта пакетная команда копирует файлы и каталоги более сложным способом.

46 ДЕРЕВО

Эта пакетная команда отображает дерево всех подкаталогов текущего каталога с любым уровнем рекурсии или глубины.

47 FC

Эта пакетная команда показывает фактические различия между двумя файлами.

48 DISKPART

Эта пакетная команда показывает и настраивает свойства разделов диска.

49 ЗАГЛАВИЕ

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

50 НАБОР

Отображает список переменных среды в текущей системе.

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

Создание пакетных файлов

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

:: Deletes All files in the Current Directory With Prompts and Warnings 
::(Hidden, System, and Read-Only Files are Not Affected) 
:: 
@ECHO OFF 
DEL . 
DR

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

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

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

  • Не называйте их после общих пакетных файлов, доступных в системе, таких как ping.cmd.

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

  • Не забудьте поставить .bat или .cmd в конце имени файла.
  • Выберите вариант «Сохранить как тип» для «Все файлы».
  • Поместите полное имя файла в кавычки «».

Выполнение пакетных файлов

Ниже приведены шаги для выполнения командного файла -

  • Step 1 - Откройте командную строку (cmd.exe).

  • Step 2 - Перейдите в место, где хранится файл .bat или .cmd.

  • Step 3 - Напишите имя файла, как показано на следующем рисунке, и нажмите кнопку Enter, чтобы запустить командный файл.

Изменение пакетных файлов

Ниже приведены шаги по изменению существующего командного файла.

  • Step 1 - Откройте проводник Windows.

  • Step 2 - Перейдите в место, где хранится файл .bat или .cmd.

  • Step 3- Щелкните файл правой кнопкой мыши и выберите в контекстном меню пункт «Редактировать». Файл откроется в Блокноте для дальнейшего редактирования.

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

Команда ECHO

@echo off

По умолчанию командный файл будет отображать свою команду при запуске. Цель этой первой команды - выключить этот дисплей. Команда «echo off» выключает отображение всего сценария, за исключением самой команды «echo off». Знак «@» перед ним заставляет команду применяться и к самому себе.

Документация

Очень часто командные файлы также содержат строки, начинающиеся с команды «Rem». Это способ ввода комментариев и документации. Компьютер игнорирует что-либо в строке, следующей за Rem. Для командных файлов с возрастающей сложностью часто бывает полезно иметь комментарии.

Программа First Batch Script

Давайте создадим нашу простую первую пакетную программу-скрипт. Откройте блокнот и введите следующие строки кода. Сохраните файл как «List.cmd».

Код делает следующее -

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

  • Команда Rem используется для добавления комментария, чтобы сказать, что именно делает этот командный файл.

  • Команда dir используется для получения содержимого папки C: \ Program Files.

  • Команда '>' используется для перенаправления вывода в файл C: \ lists.txt.

  • Наконец, команда echo используется, чтобы сообщить пользователю, что операция завершена.

@echo off 
Rem This is for listing down all the files in the directory Program files 
dir "C:\Program Files" > C:\lists.txt 
echo "The program has completed"

При выполнении указанной выше команды имена файлов в C: \ Program Files будут отправлены в файл C: \ Lists.txt, и в командной строке отобразится сообщение «Программа завершена».

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

Аргументы командной строки

Пакетные сценарии поддерживают концепцию аргументов командной строки, в которой аргументы могут быть переданы в пакетный файл при вызове. Аргументы можно вызывать из командных файлов с помощью переменных% 1,% 2,% 3 и т. Д.

В следующем примере показан пакетный файл, который принимает 3 аргумента командной строки и выводит их на экран командной строки.

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

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

Test.bat 1 2 3

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

Приведенная выше команда дает следующий результат.

1 
2 
3

Если бы мы запускали партию как

Example 1 2 3 4

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

Установить команду

Другой способ инициализации переменных - это команда set. Ниже приведен синтаксис команды set.

Синтаксис

set /A variable-name=value

где,

  • variable-name это имя переменной, которую вы хотите установить.

  • value - это значение, которое необходимо установить для переменной.

  • /A – Этот переключатель используется, если значение должно быть числовым.

В следующем примере показан простой способ использования команды set.

пример

@echo off 
set message=Hello World 
echo %message%
  • В приведенном выше фрагменте кода определена переменная с именем message, которой присвоено значение «Hello World».

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

Вывод

Приведенная выше команда дает следующий результат.

Hello World

Работа с числовыми значениями

В пакетном сценарии также можно определить переменную для хранения числового значения. Это можно сделать с помощью переключателя / A.

В следующем коде показан простой способ установки числовых значений с помощью переключателя / A.

@echo off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% + %b% 
echo %c%
  • Сначала мы устанавливаем значение 2 переменных, a и b, на 5 и 10 соответственно.

  • Мы добавляем эти значения и сохраняем их в переменной c.

  • Наконец, мы отображаем значение переменной c.

Результатом вышеупомянутой программы будет 15.

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

@echo off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% + %b% 
echo %c% 
SET /A c = %a% - %b% 
echo %c% 
SET /A c = %b% / %a% 
echo %c% 
SET /A c = %b% * %a% 
echo %c%

Приведенная выше команда дает следующий результат.

15 
-5 
2 
50

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

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

В сценариях DOS также есть определение переменных с локальным и глобальным охватом. По умолчанию переменные являются глобальными для всего сеанса командной строки. Вызовите команду SETLOCAL, чтобы сделать переменные локальными для области вашего сценария. После вызова SETLOCAL любые назначения переменных возвращаются при вызове ENDLOCAL, вызове EXIT или когда выполнение достигает конца файла (EOF) в вашем сценарии. В следующем примере показана разница, когда в сценарии устанавливаются локальные и глобальные переменные.

пример

@echo off 
set globalvar = 5
SETLOCAL
set var = 13145
set /A var = %var% + 5
echo %var%
echo %globalvar%
ENDLOCAL

Несколько ключевых моментов, которые следует отметить об указанной выше программе.

  • Глобальная переменная определяется с глобальной областью видимости и доступна во всем сценарии.

  • Переменная 'var' определена в локальной области видимости, потому что она заключена между блоками 'SETLOCAL' и 'ENDLOCAL'. Следовательно, эта переменная будет уничтожена, как только будет выполнен оператор ENDLOCAL.

Вывод

Приведенная выше команда дает следующий результат.

13150
5

Вы заметите, что команда echo% var% ничего не даст, потому что после оператора ENDLOCAL переменная 'var' больше не будет существовать.

Работа с переменными окружения

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

@echo off 
echo %JAVA_HOME%

На выходе будет показан каталог JAVA_HOME, который будет зависеть от системы к системе. Ниже приведен пример вывода.

C:\Atlassian\Bitbucket\4.0.1\jre

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

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

ECHO OFF 
IF NOT "%OS%"=="Windows_NT" GOTO Syntax 
ECHO.%* | FIND "?" >NUL 
IF NOT ERRORLEVEL 1 GOTO Syntax 
IF NOT [%2]==[] GOTO Syntax 
SETLOCAL 
SET WSS= 
IF NOT [%1]==[] FOR /F "tokens = 1 delims = \ " %%A IN ('ECHO.%~1') DO SET WSS = %%A 
FOR /F "tokens = 1 delims = \ " %%a IN ('NET VIEW ^| FIND /I "\\%WSS%"') DO FOR /F 
"tokens = 1 delims = " %%A IN ('NBTSTAT -a %%a ^| FIND /I /V "%%a" ^| FIND "<03>"') 
DO ECHO.%%a %%A 
ENDLOCAL 
GOTO:EOF 
ECHO Display logged on users and their workstations. 
ECHO Usage: ACTUSR [ filter ] 
IF "%OS%"=="Windows_NT" ECHO Where: filter is the first part 
of the computer name^(s^) to be displayed

Комментарии с использованием оператора Rem

Есть два способа создания комментариев в пакетном скрипте; один - через команду Rem. Любой текст, следующий за оператором Rem, будет рассматриваться как комментарий и не будет выполнен. Ниже приводится общий синтаксис этого оператора.

Синтаксис

Rem Remarks

где «Примечания» - это комментарии, которые необходимо добавить.

В следующем примере показан простой способ Rem можно использовать команду.

пример

@echo off 
Rem This program just displays Hello World 
set message=Hello World 
echo %message%

Вывод

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

Hello World

Комментарии, использующие оператор ::

Другой способ создать комментарии в пакетном скрипте - использовать команду ::. Любой текст, следующий за оператором ::, будет рассматриваться как комментарий и не будет выполнен. Ниже приводится общий синтаксис этого оператора.

Синтаксис

:: Remarks

где «Примечания» - это комментарий, который необходимо добавить.

В следующем примере показано использование команды «::».

пример

@echo off 
:: This program just displays Hello World 
set message = Hello World 
echo %message%

Вывод

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

Hello World

Note - Если у вас слишком много строк Rem, это может замедлить код, потому что в конце концов каждая строка кода в пакетном файле все равно должна быть выполнена.

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

::===============================================================
:: The below example is used to find computer and logged on users
::
::===============================================================
ECHO OFF 
:: Windows version check 
IF NOT "%OS%"=="Windows_NT" GOTO Syntax 
ECHO.%* | FIND "?" >NUL 
:: Command line parameter check 
IF NOT ERRORLEVEL 1 GOTO Syntax
IF NOT [%2]==[] GOTO Syntax 
:: Keep variable local 
SETLOCAL 
:: Initialize variable 
SET WSS= 
:: Parse command line parameter 
IF NOT [%1]==[] FOR /F "tokens = 1 delims = \ " %%A IN ('ECHO.%~1') DO SET WSS = %%A 
:: Use NET VIEW and NBTSTAT to find computers and logged on users 
FOR /F "tokens = 1 delims = \ " %%a IN ('NET VIEW ^| FIND /I "\\%WSS%"') DO FOR /F 
"tokens = 1 delims = " %%A IN ('NBTSTAT -a %%a ^| FIND /I /V "%%a" ^| FIND 
"<03>"') DO ECHO.%%a %%A 
:: Done 
ENDLOCAL
GOTO:EOF 
:Syntax 
ECHO Display logged on users and their workstations. 
ECHO Usage: ACTUSR [ filter ] 
IF "%OS%"=="Windows_NT" ECHO Where: filter is the first part of the 
computer name^(s^) to be displayed

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

В DOS строка - это упорядоченный набор символов, например «Hello, World!».

S.No Строки и описание
1 Создать строку

Строку в DOS можно создать следующим образом.

2 Пустой строкой

Пустой строкой

3 Строчная интерполяция

Интерполяция строк - это способ создания нового значения String из смеси констант, переменных, литералов и выражений путем включения их значений в строковый литерал.

4 Конкатенация строк

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

5 Длина строки

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

6 toInt

Переменная, которая была установлена ​​как строка с помощью переменной set, может быть преобразована в целое число с помощью переключателя / A, который использует переменную set. В следующем примере показано, как это можно сделать.

7 Выровнять по правому краю

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

8 Левая строка

Используется для извлечения символов из начала строки.

9 Средняя строка

Это используется для извлечения подстроки по позиции символов в строке.

10 удалять

Функция подстановки строк также может использоваться для удаления подстроки из другой строки.

11 Удалить оба конца

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

12 Удалить все пробелы

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

13 Заменить строку

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

14 Правая строка

Это используется для извлечения символов из конца строки.

Массивы конкретно не определены как тип в Batch Script, но могут быть реализованы. При реализации массивов в пакетном скрипте необходимо отметить следующее.

  • Каждый элемент массива необходимо определить с помощью команды set.
  • Для перебора значений массива потребуется цикл for.

Создание массива

Массив создается с помощью следующей команды set.

set a[0]=1

Где 0 - это индекс массива, а 1 - значение, присвоенное первому элементу массива.

Другой способ реализации массивов - определить список значений и перебрать список значений. В следующем примере показано, как это можно реализовать.

пример

@echo off 
set list = 1 2 3 4 
(for %%a in (%list%) do ( 
   echo %%a 
))

Вывод

Приведенная выше команда дает следующий результат.

1
2
3
4

Доступ к массивам

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

пример

@echo off 
set a[0]=1 
echo %a[0]%

В этом примере индекс начинается с 0, что означает, что к первому элементу можно получить доступ, используя индекс как 0, ко второму элементу можно получить доступ, используя индекс как 1 и так далее. Давайте проверим следующий пример для создания, инициализации и доступа к массивам -

@echo off
set a[0] = 1 
set a[1] = 2 
set a[2] = 3 
echo The first element of the array is %a[0]% 
echo The second element of the array is %a[1]% 
echo The third element of the array is %a[2]%

Приведенная выше команда дает следующий результат.

The first element of the array is 1 
The second element of the array is 2 
The third element of the array is 3

Изменение массива

Чтобы добавить элемент в конец массива, вы можете использовать элемент set вместе с последним индексом элемента массива.

пример

@echo off 
set a[0] = 1  
set a[1] = 2  
set a[2] = 3 
Rem Adding an element at the end of an array 
Set a[3] = 4 
echo The last element of the array is %a[3]%

Приведенная выше команда дает следующий результат.

The last element of the array is 4

Вы можете изменить существующий элемент массива, назначив новое значение по заданному индексу, как показано в следующем примере:

@echo off 
set a[0] = 1 
set a[1] = 2  
set a[2] = 3 
Rem Setting the new value for the second element of the array 
Set a[1] = 5 
echo The new value of the second element of the array is %a[1]%

Приведенная выше команда дает следующий результат.

The new value of the second element of the array is 5

Итерация по массиву

Итерация по массиву достигается с помощью цикла for и прохождения каждого элемента массива. В следующем примере показан простой способ реализации массива.

@echo off 
setlocal enabledelayedexpansion 
set topic[0] = comments 
set topic[1] = variables 
set topic[2] = Arrays 
set topic[3] = Decision making 
set topic[4] = Time and date 
set topic[5] = Operators 

for /l %%n in (0,1,5) do ( 
   echo !topic[%%n]! 
)

В отношении вышеуказанной программы необходимо отметить следующее:

  • Каждый элемент массива должен быть определен специально с помощью команды set.

  • Цикл for с параметром / L для перемещения по диапазонам используется для итерации по массиву.

Вывод

Приведенная выше команда дает следующий результат.

Comments 
variables 
Arrays 
Decision making 
Time and date 
Operators

Длина массива

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

@echo off 
set Arr[0] = 1 
set Arr[1] = 2 
set Arr[2] = 3 
set Arr[3] = 4 
set "x = 0" 
:SymLoop 

if defined Arr[%x%] ( 
   call echo %%Arr[%x%]%% 
   set /a "x+=1"
   GOTO :SymLoop 
)
echo "The length of the array is" %x%

Вывод

Выходные данные Приведенная выше команда дает следующий результат.

The length of the array is 4

Создание структур в массивах

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

пример

@echo off 
set len = 3 
set obj[0].Name = Joe 
set obj[0].ID = 1 
set obj[1].Name = Mark 
set obj[1].ID = 2 
set obj[2].Name = Mohan 
set obj[2].ID = 3 
set i = 0 
:loop 

if %i% equ %len% goto :eof 
set cur.Name= 
set cur.ID=

for /f "usebackq delims==.tokens=1-3" %%j in (`set obj[%i%]`) do ( 
   set cur.%%k=%%l 
) 
echo Name = %cur.Name% 
echo Value = %cur.ID% 
set /a i = %i%+1 
goto loop

В отношении приведенного выше кода необходимо отметить следующие ключевые моменты.

  • Каждая переменная, определенная с помощью команды set, имеет 2 значения, связанные с каждым индексом массива.

  • Переменная i установлен в 0, чтобы мы могли перебирать структуру, длина массива равна 3.

  • Мы всегда проверяем условие, равно ли значение i значению len а если нет, мы перебираем код.

  • Мы можем получить доступ к каждому элементу структуры, используя нотацию obj [% i%].

Вывод

Приведенная выше команда дает следующий результат.

Name = Joe 
Value = 1 
Name = Mark 
Value = 2 
Name = Mohan 
Value = 3

Структуры принятия решений требуют, чтобы программист указал одно или несколько условий, которые должны быть оценены или проверены программой, а также оператор или операторы, которые должны быть выполнены, если условие определено как выполняемое. true, и, необязательно, другие операторы, которые должны быть выполнены, если условие определено как false.

S.No Строки и описание
1 Если заявление

Первое заявление о принятии решения - это утверждение «если».

2 Если / иначе заявление

Следующим оператором принятия решения является оператор If / else. Ниже приводится общая форма этого утверждения.

3 Вложенные операторы If

Иногда требуется, чтобы несколько операторов if были встроены друг в друга. Ниже приводится общая форма этого утверждения.

Оператор - это символ, который сообщает компилятору о необходимости выполнения определенных математических или логических операций.

В пакетном скрипте возможны следующие типы операторов.

  • Арифметические операторы
  • Операторы отношения
  • Логические операторы
  • Операторы присваивания
  • Побитовые операторы

Арифметические операторы

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

Показать пример

Оператор Описание пример
+ Сложение двух операндов 1 + 2 даст 3
- Вычитает второй операнд из первого 2-1 даст 1
* Умножение обоих операндов 2 * 2 даст 4
/ Деление числителя на знаменатель 3/2 даст 1,5
% Оператор модуля и остаток после деления целого числа на число с плавающей запятой 3% 2 даст 1

Операторы отношения

Операторы отношения позволяют сравнивать объекты. Ниже приведены доступные операторы отношения.

Показать пример

Оператор Описание пример
EQU Проверяет равенство двух объектов 2 EQU 2 даст истинное
NEQ Проверяет разницу между двумя объектами 3 NEQ 2 вернет
LSS Проверяет, меньше ли левый объект правого операнда 2 LSS 3 вернет
LEQ Проверяет, меньше ли левый объект правому операнду или равен ему 2 LEQ 3 вернет
GTR Проверяет, больше ли левый объект правого операнда 3 GTR 2 вернет
GEQ Проверяет, больше ли левый объект правому операнду или равен ему 3 GEQ 2 даст истинное

Логические операторы

Логические операторы используются для вычисления логических выражений. Ниже приведены доступные логические операторы.

Пакетный язык снабжен полным набором логических операторов, таких как AND, OR, XOR, но только для двоичных чисел. Также нет значений TRUE или FALSE. Единственный логический оператор, доступный для условий, - это оператор НЕ.

Показать пример

Оператор Описание
И Это логический оператор "и"
ИЛИ ЖЕ Это логический оператор "или"
НЕ Это логический оператор «не».

Операторы присваивания

Язык пакетных сценариев также предоставляет операторы присваивания. Ниже приведены доступные операторы присваивания.

Показать пример

Оператор Описание пример
+ = Это добавляет правый операнд к левому операнду и присваивает результат левому операнду

Установить / A a = 5

а + = 3

Выход будет 8

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

Установить / A a = 5

а - = 3

Выход будет 2

знак равно Это умножает правый операнд на левый операнд и присваивает результат левому операнду

Установить / A a = 5

а * = 3

Выход будет 15

знак равно Это делит левый операнд с правым операндом и присваивает результат левому операнду

Установить / A a = 6

а / = 3

Выход будет 2

знак равно Он принимает модуль с использованием двух операндов и присваивает результат левому операнду

Установить / A a = 5

а% = 3

Выход будет 2

Побитовые операторы

Побитовые операторы также возможны в пакетном скрипте. Ниже перечислены доступные операторы.

Показать пример

Оператор Описание
& Это побитовый оператор «И»
| Это побитовый оператор "или"
^ Это побитовый «xor» или эксклюзивный оператор или.

Ниже приводится таблица истинности, демонстрирующая эти операторы.

п q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

Дата и время в сценариях DOS имеют следующие две основные команды для получения даты и времени системы.

СВИДАНИЕ

Эта команда получает системную дату.

Синтаксис

DATE

пример

@echo off 
echo %DATE%

Вывод

Текущая дата будет отображаться в командной строке. Например,

Mon 12/28/2015

ВРЕМЯ

Эта команда устанавливает или отображает время.

Синтаксис

TIME

пример

@echo off 
echo %TIME%

Вывод

Будет отображено текущее системное время. Например,

22:06:52.87

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

Дата в формате год-месяц-день

пример

@echo off 
echo/Today is: %year%-%month%-%day% 
goto :EOF 
setlocal ENABLEEXTENSIONS 
set t = 2&if "%date%z" LSS "A" set t = 1 

for /f "skip=1 tokens = 2-4 delims = (-)" %%a in ('echo/^|date') do ( 
   for /f "tokens = %t%-4 delims=.-/ " %%d in ('date/t') do ( 
      set %%a=%%d&set %%b=%%e&set %%c=%%f)) 
endlocal&set %1=%yy%&set %2=%mm%&set %3=%dd%&goto :EOF

Вывод

Приведенная выше команда дает следующий результат.

Today is: 2015-12-30

Есть три универсальных «файла» для ввода с клавиатуры, печати текста на экране и печати ошибок на экране. Стандартный входящий файл, известный какstdin, содержит вход в программу / скрипт. Файл «Standard Out», известный какstdout, используется для записи вывода для отображения на экране. Наконец, файл «Standard Err», известный какstderr, содержит сообщения об ошибках для отображения на экране.

На каждый из этих трех стандартных файлов, иначе называемых стандартными потоками, ссылаются с использованием номеров 0, 1 и 2. Стандартный ввод - это файл 0, стандартный вывод - это файл 1, а стандартный поток - это файл 2.

Перенаправление вывода (Stdout и Stderr)

Одна из распространенных практик в пакетных файлах - это отправка вывода программы в файл журнала. Оператор> отправляет или перенаправляет stdout или stderr в другой файл. В следующем примере показано, как это можно сделать.

Dir C:\ > list.txt

В приведенном выше примере stdout команды Dir C: \ перенаправляется в файл list.txt.

Если вы добавите число 2 к фильтру перенаправления, он перенаправит stderr в файл lists.txt.

Dir C:\ 2> list.txt

Можно даже совместить stdout и stderrпотоки с использованием номера файла и префикса '&'. Ниже приводится пример.

DIR C:\ > lists.txt 2>&1

Подавление вывода программы

Псевдо-файл NUL используется для отбрасывания любого вывода программы. В следующем примере показано, что вывод команды DIR отбрасывается путем отправки вывода в NUL.

Dir C:\ > NUL

Stdin

Чтобы работать со стандартным вводом, вы должны использовать обходной путь. Это можно сделать, перенаправив собственный stdin командной строки, называемый CON.

В следующем примере показано, как перенаправить вывод в файл с именем lists.txt. После того, как вы выполните приведенную ниже команду, командная строка будет принимать все вводимые пользователем данные, пока не получит символ EOF. Позже он отправляет все входные данные в файл lists.txt.

TYPE CON > lists.txt

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

Ниже приводится общий код выхода и их описание.

Код ошибки Описание
0 Программа успешно завершена.
1 Неправильная функция. Указывает, что Action попытался выполнить нераспознанную команду в командной строке Windows cmd.exe.
2 Система не может найти указанный файл. Указывает, что файл не может быть найден в указанном месте.
3 Система не может найти указанный путь. Указывает, что указанный путь не может быть найден.
5 В доступе отказано. Указывает, что пользователь не имеет права доступа к указанному ресурсу.

9009

0x2331

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

221225495

0xC0000017

-1073741801

Недостаточно виртуальной памяти.

Это указывает на то, что Windows не хватает памяти.

3221225786

0xC000013A

-1073741510

Приложение было закрыто в результате нажатия CTRL + C. Указывает, что приложение было закрыто нажатием клавиш CTRL + C или CTRL + Break или закрытием окна командной строки.

3221225794

0xC0000142

-1073741502

Приложение не удалось правильно инициализировать. Указывает, что приложение было запущено на рабочем столе, к которому текущий пользователь не имеет прав доступа. Другая возможная причина заключается в том, что не удалось инициализировать либо gdi32.dll, либо user32.dll.

Уровень ошибки

Переменная среды% ERRORLEVEL% содержит код возврата последней выполненной программы или сценария.

По умолчанию способ проверки УРОВНЯ ОШИБКИ выполняется с помощью следующего кода.

Синтаксис

IF %ERRORLEVEL% NEQ 0 ( 
   DO_Something 
)

Обычно в конце командного файла используется команда EXIT / B% ERRORLEVEL%, чтобы вернуть коды ошибок из командного файла.

EXIT / B в конце командного файла остановит выполнение командного файла.

Используйте EXIT / B <exitcodes> в конце командного файла для возврата пользовательских кодов возврата.

Переменная среды% ERRORLEVEL% содержит последний уровень ошибки в пакетном файле, который представляет собой последние коды ошибок из последней выполненной команды. В пакетном файле всегда рекомендуется использовать переменные среды вместо постоянных значений, поскольку одна и та же переменная расширяется до разных значений на разных компьютерах.

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

пример

Предположим, у нас есть командный файл Find.cmd со следующим кодом. В коде мы четко упомянули, что если мы не найдем файл с именем lists.txt, тогда мы должны установить уровень ошибки равным 7. Точно так же, если мы увидим, что переменная userprofile не определена, мы должны установить код уровня ошибки равным 9.

if not exist c:\lists.txt exit 7 
if not defined userprofile exit 9 
exit 0

Предположим, у нас есть другой файл с именем App.cmd, который сначала вызывает Find.cmd. Теперь, если Find.cmd возвращает ошибку, в которой он устанавливает уровень ошибки больше 0, он выйдет из программы. В следующем пакетном файле после вызова Find.cnd find он фактически проверяет, не превышает ли уровень ошибки 0.

Call Find.cmd

if errorlevel gtr 0 exit 
echo “Successful completion”

Вывод

В приведенной выше программе у нас могут быть следующие сценарии в качестве вывода:

  • Если файл c: \ lists.txt не существует, то в выводе консоли ничего не будет отображаться.

  • Если переменная userprofile не существует, то в выводе консоли ничего не будет отображаться.

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

Петли

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

S.No Циклы и описание
1 Пока реализация заявления

В пакетном скрипте нет прямого оператора while, но мы можем очень легко реализовать этот цикл, используя оператор if и метки.

2 Оператор For - реализации списка

Конструкция «FOR» предлагает возможности цикла для командных файлов. Ниже приводится общая конструкция оператора for для работы со списком значений.

3 Цикл по диапазонам

Оператор for также может перемещаться по диапазону значений. Ниже приводится общая форма заявления.

4 Классическая реализация цикла

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

Цикл по аргументам командной строки

Оператор for также может использоваться для проверки аргументов командной строки. В следующем примере показано, как можно использовать оператор for для циклического перебора аргументов командной строки.

пример

@ECHO OFF 
:Loop 

IF "%1"=="" GOTO completed 
FOR %%F IN (%1) DO echo %%F 
SHIFT 
GOTO Loop 
:completed

Вывод

Предположим, что наш приведенный выше код хранится в файле Test.bat. Вышеупомянутая команда выдаст следующий результат, если командный файл передает аргументы командной строки 1,2 и 3 как Test.bat 1 2 3.

1 
2 
3

S.No Циклы и описание
1 Реализация заявления о прерывании

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

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

Как и в любых других языках, функции в Batch Script следует той же процедуре -

  • Function Declaration - Он сообщает компилятору имя функции, тип возвращаемого значения и параметры.

  • Function Definition - Он обеспечивает фактическое тело функции.

Определение функции

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

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

Ниже приводится синтаксис простой функции.

:function_name 
Do_something 
EXIT /B 0
  • Function_name - это имя, присвоенное функции, которое должно иметь какое-то значение, чтобы соответствовать тому, что функция на самом деле делает.

  • Оператор EXIT используется для обеспечения правильного завершения функции.

Ниже приводится пример простой функции.

пример

:Display 
SET /A index=2 
echo The value of index is %index% 
EXIT /B 0
S.No Функции и описание
1 Вызов функции

Функция вызывается в пакетном сценарии с помощью команды call.

2 Функции с параметрами

Функции могут работать с параметрами, просто передав их при вызове функции.

3 Функции с возвращаемыми значениями

Функции могут работать с возвращаемыми значениями, просто передавая имена переменных

4 Локальные переменные в функциях

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

5 Рекурсивные функции

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

6 Файловый ввод-вывод

В Batch Script можно выполнять обычные операции ввода-вывода файлов, которые можно ожидать от любого языка программирования.

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

Создание нового файла осуществляется с помощью фильтра перенаправления>. Этот фильтр можно использовать для перенаправления любого вывода в файл.

8 Запись в файлы

Запись содержимого в файлы также осуществляется с помощью фильтра перенаправления>. Этот фильтр можно использовать для перенаправления любого вывода в файл.

9 Добавление к файлам

Запись содержимого в файлы также осуществляется с помощью фильтра двойного перенаправления >>. Этот фильтр можно использовать для добавления любого вывода в файл.

10 Чтение из файлов

Чтение файлов в пакетном сценарии выполняется с помощью команды цикла FOR для просмотра каждой строки, определенной в файле, который необходимо прочитать.

11 Удаление файлов

Для удаления файлов Batch Script предоставляет команду DEL.

12 Переименование файлов

Для переименования файлов Batch Script предоставляет команду REN или RENAME.

13 Перемещение файлов

Для перемещения файлов Batch Script предоставляет команду MOVE.

14 Пакетные файлы - трубы

Оператор канала (|) берет вывод (по умолчанию STDOUT) одной команды и направляет его на ввод (по умолчанию STDIN) другой команды.

15 Пакетные файлы - входы

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

16 Использование оператора SHIFT

Одним из ограничений аргументов командной строки является то, что он может принимать только аргументы до% 9. Возьмем пример этого ограничения.

17 Папки

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

18 Создание папок

Создание папки выполняется с помощью команды MD (Создать каталог).

19 Список содержимого папки

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

20 Удаление папок

Для удаления папок Batch Scripting предоставляет команду DEL.

21 год Переименование папок

Для переименования папок Batch Script предоставляет команду REN или RENAME.

22 Перемещение папок

Для перемещения папок Batch Script предоставляет команду MOVE.

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

Просмотр списка запущенных процессов

В пакетном сценарии команду TASKLIST можно использовать для получения списка текущих процессов в системе.

Синтаксис

TASKLIST [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter]
[/FO format] [/NH]
S.No. Опции и описание
1.

/S system

Определяет удаленную систему для подключения к

2.

/U

[domain\]user

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

3.

/P [password]

Задает пароль для данного пользовательского контекста. Запрашивает ввод, если опущено.

4.

/M [module]

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

5.

/SVC

Отображает службы, размещенные в каждом процессе.

6.

/V

Отображает подробную информацию о задаче.

7.

/FI filter

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

8.

/FO format

Задает выходной формат. Допустимые значения: «ТАБЛИЦА», «СПИСОК», «CSV».

9.

/NH

Указывает, что «Заголовок столбца» не должен отображаться в выводе. Действительно только для форматов "ТАБЛИЦА" и "CSV".

Примеры

TASKLIST

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

Image Name                    PID       Session Name       Session#     Mem Usage
========================= ========    ================ =========== ============
System Idle Process             0        Services            0              4 K
System                          4        Services            0            272 K
smss.exe                      344        Services            0          1,040 K
csrss.exe                     528        Services            0          3,892 K
csrss.exe                     612        Console             1         41,788 K
wininit.exe                   620        Services            0          3,528 K
winlogon.exe                  648        Console             1          5,884 K
services.exe                  712        Services            0          6,224 K
lsass.exe                     720        Services            0          9,712 K
svchost.exe                   788        Services            0         10,048 K
svchost.exe                   832        Services            0          7,696 K
dwm.exe                       916        Console             1        117,440 K
nvvsvc.exe                    932        Services            0          6,692 K
nvxdsync.exe                  968        Console             1         16,328 K
nvvsvc.exe                    976        Console             1         12,756 K
svchost.exe                  1012        Services            0         21,648 K
svchost.exe                   236        Services            0         33,864 K
svchost.exe                   480        Services            0         11,152 K
svchost.exe                  1028        Services            0         11,104 K
svchost.exe                  1048        Services            0         16,108 K
wlanext.exe                  1220        Services            0         12,560 K
conhost.exe                  1228        Services            0          2,588 K
svchost.exe                  1276        Services            0         13,888 K
svchost.exe                  1420        Services            0         13,488 K
spoolsv.exe                  1556        Services            0          9,340 K

tasklist > process.txt

Приведенная выше команда берет вывод, отображаемый списком задач, и сохраняет его в файл process.txt.

tasklist /fi "memusage gt 40000"

Приведенная выше команда будет извлекать только те процессы, память которых превышает 40 МБ. Ниже приведен пример вывода, который можно визуализировать.

Image Name                    PID      Session Name     Session#     Mem Usage
=========================   ======== ================ =========== ============
dwm.exe                        916     Console             1        127,912 K
explorer.exe                  2904     Console             1        125,868 K
ServerManager.exe             1836     Console             1         59,796 K
WINWORD.EXE                   2456     Console             1        144,504 K
chrome.exe                    4892     Console             1        123,232 K
chrome.exe                    4976     Console             1         69,412 K
chrome.exe                    1724     Console             1         76,416 K
chrome.exe                    3992     Console             1         56,156 K
chrome.exe                    1168     Console             1        233,628 K
chrome.exe                     816     Console             1         66,808 K

Убийство определенного процесса

Позволяет пользователю, работающему под управлением Microsoft Windows XP professional, Windows 2003 или более поздней версии, завершить задачу из командной строки Windows по идентификатору процесса (PID) или имени образа. Для этого используется команда TASKILL.

Синтаксис

TASKKILL [/S system [/U username [/P [password]]]] { [/FI filter] 
[/PID processid | /IM imagename] } [/T] [/F]
S.No. Опции и описание
1.

/S system

Определяет удаленную систему для подключения к

2.

/U

[domain\]user

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

3.

/P [password]

Задает пароль для данного пользовательского контекста. Запрашивает ввод, если опущено.

4.

/FI

FilterName

Применяет фильтр для выбора набора задач. Позволяет использовать "*". напр. imagename eq acme * См. ниже фильтры для получения дополнительной информации и примеров.

5.

/PID

processID

Задает PID процесса, который нужно завершить. Используйте TaskList, чтобы получить PID.

6.

/IM

ImageName

Задает имя образа прерываемого процесса. Подстановочный знак «*» можно использовать для указания всех задач или имен изображений.

7.

/T

Завершает указанный процесс и все дочерние процессы, которые были им запущены.

8.

/F

Задает принудительное завершение процесса (ов).

Примеры

taskkill /f /im notepad.exe

Приведенная выше команда закрывает задачу открытого блокнота, если она открыта.

taskill /pid 9214

Вышеупомянутая команда убивает процесс с номером 9214.

Запуск нового процесса

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

Синтаксис

START "title" [/D path] [options] "command" [parameters]

В которой

  • title - Текст для строки заголовка окна CMD (обязательно).

  • path - Начальный каталог.

  • command - Команда, командный файл или исполняемая программа для запуска.

  • parameters - Параметры, переданные команде.

S.No. Опции и описание
1.

/MIN

Стартовое окно Свернуто

2.

/MAX

Стартовое окно развернуто.

3.

/LOW

Используйте класс приоритета IDLE.

4.

/NORMAL

Используйте НОРМАЛЬНЫЙ класс приоритета.

5.

/ABOVENORMAL

Используйте класс приоритета ABOVENORMAL.

6.

/BELOWNORMAL

Используйте НИЖЕ НОРМАЛЬНЫЙ класс приоритета.

7.

/HIGH

Используйте ВЫСОКИЙ приоритетный класс.

8.

/REALTIME

Используйте класс приоритета REALTIME.

Примеры

START "Test Batch Script" /Min test.bat

Приведенная выше команда запустит пакетный сценарий test.bat в новом окне. Окна запустятся в свернутом режиме и также будут иметь заголовок «Тестовый пакетный сценарий».

START "" "C:\Program Files\Microsoft Office\Winword.exe" "D:\test\TESTA.txt"

Приведенная выше команда фактически запустит Microsoft Word в другом процессе, а затем откроет файл TESTA.txt в MS Word.

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

Dir /w

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

dw = dir /w

Когда мы хотим выполнить dir /w команду, мы можем просто ввести слово dw. Слово «dw» теперь стало псевдонимом для команды Dir / w.

Создание псевдонима

Псевдонимы управляются с помощью doskey команда.

Синтаксис

DOSKEY [options] [macroname=[text]]

В которой

  • macroname - Краткое имя макроса.

  • text - Команды, которые вы хотите вспомнить.

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

S.No. Опции и описание
1.

/REINSTALL

Устанавливает новую копию Doskey

2.

/LISTSIZE = size

Устанавливает размер буфера истории команд.

3.

/MACROS

Отображает все макросы Doskey.

4.

/MACROS:ALL

Отображает все макросы Doskey для всех исполняемых файлов, содержащих макросы Doskey.

5.

/MACROS:exename

Отображает все макросы Doskey для данного исполняемого файла.

6.

/HISTORY

Отображает все команды, хранящиеся в памяти.

7.

/INSERT

Указывает, что новый вводимый вами текст будет вставлен в старый текст.

8.

/OVERSTRIKE

Указывает, что новый текст перезаписывает старый текст.

9.

/EXENAME = exename

Задает исполняемый файл.

10.

/MACROFILE = filename

Задает файл макросов для установки.

11.

macroname

Задает имя для создаваемого вами макроса.

12.

text

Задает команды, которые вы хотите записать.

пример

Создайте новый файл с именем keys.bat и введите в него следующие команды. Приведенные ниже команды создают два псевдонима, один if для команды cd, которая автоматически переходит в каталог с именем test. А другой - для команды dir.

@echo off
doskey cd = cd/test
doskey d = dir

После выполнения команды вы сможете запускать эти псевдонимы в командной строке.

Вывод

На следующем снимке экрана показано, что после выполнения созданного выше командного файла вы можете свободно ввести команду 'd', и она предоставит вам список каталогов, который означает, что ваш псевдоним был создан.

Удаление псевдонима

Псевдоним или макрос можно удалить, установив для него значение NULL.

пример

@echo off
doskey cd = cd/test
doskey d = dir
d=

В приведенном выше примере мы сначала устанавливаем макрос d на d = dir. После чего мы устанавливаем его в NULL. Поскольку мы установили значение d равным NULL, макрос d будет удален.

Замена псевдонима

Псевдоним или макрос можно заменить, установив для него новое желаемое значение.

пример

@echo off
doskey cd = cd/test
doskey d = dir

d = dir /w

В приведенном выше примере мы сначала устанавливаем макрос d на d = dir. После этого мы устанавливаем его в dir / w. Так как мы установили значение d на новое значение, псевдоним «d» теперь примет новое значение.

В Windows появилась улучшенная библиотека, которую можно использовать в пакетном сценарии для работы с устройствами, подключенными к системе. Это называется консолью устройства - DevCon.exe.

Разработчики и тестеры драйверов Windows могут использовать DevCon для проверки правильности установки и настройки драйвера, включая правильные файлы INF, стек драйверов, файлы драйверов и пакет драйверов. Вы также можете использовать команды DevCon (включить, отключить, установить, запустить, остановить и продолжить) в сценариях для тестирования драйвера.DevCon - это инструмент командной строки, который выполняет функции управления устройствами на локальных и удаленных компьютерах.

Отображение информации о драйвере и устройстве DevCon может отображать следующие свойства драйверов и устройств на локальных и удаленных компьютерах (под управлением Windows XP и более ранних версий):

  • Идентификаторы оборудования, совместимые идентификаторы и идентификаторы экземпляров устройства. Эти идентификаторы подробно описаны в строках идентификации устройства.

  • Классы настройки устройства.

  • Устройства в классе настройки устройства.

  • INF-файлы и файлы драйверов устройств.

  • Подробная информация о пакетах драйверов.

  • Аппаратные ресурсы.

  • Состояние устройства.

  • Ожидаемый стек драйверов.

  • Пакеты сторонних драйверов в магазине драйверов.

  • Поиск устройств DevCon может искать установленные и удаленные устройства на локальном или удаленном компьютере по идентификатору оборудования, идентификатору экземпляра устройства или классу настройки устройства.

  • Изменение настроек устройства DevCon может изменять статус или конфигурацию устройств Plug and Play (PnP) на локальном компьютере следующими способами:

    • Включите устройство.

    • Отключить устройство.

    • Обновите драйверы (интерактивные и неинтерактивные).

    • Установите устройство (создайте узел разработки и установите программное обеспечение).

    • Удалите устройство из дерева устройств и удалите его стек устройств.

    • Повторное сканирование для устройств Plug and Play.

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

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

    • Добавляйте и удаляйте сторонние пакеты драйверов из хранилища драйверов.

DevCon (DevCon.exe) включается при установке WDK, Visual Studio и Windows SDK для настольных приложений. Комплект DevCon.exe после установки доступен в следующих местах.

%WindowsSdkDir%\tools\x64\devcon.exe
%WindowsSdkDir%\tools\x86\devcon.exe
%WindowsSdkDir%\tools\arm\devcon.exe

Синтаксис

devcon [/m:\\computer] [/r] command [arguments]

в которой

  • /m:\\computer- Выполняет команду на указанном удаленном компьютере. Обратные косые черты обязательны.

  • /r- Условная перезагрузка. Перезагружает систему после завершения операции, только если перезагрузка требуется для того, чтобы изменения вступили в силу.

  • command - Задает команду DevCon.

  • Чтобы просмотреть и отобразить информацию об устройствах на компьютере, используйте следующие команды -

    • DevCon HwID

    • Классы DevCon

    • DevCon ListClass

    • Файлы драйверов DevCon

    • Узлы драйверов DevCon

    • Ресурсы DevCon

    • Стек DevCon

    • Статус DevCon

    • DevCon Dp_enum

  • Для поиска информации об устройствах на компьютере используйте следующие команды -

    • DevCon Найти

    • DevCon FindAll

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

    • DevCon Включить

    • DevCon Отключить

    • Обновление DevCon

    • Обновление DevConNI

    • DevCon Установить

    • DevCon Удалить

    • DevCon Rescan

    • DevCon Restart

    • Перезагрузка DevCon

    • DevCon SetHwID

    • DevCon ClassFilter

    • DevCon Dp_add

    • DevCon Dp_delete

Примеры

Ниже приведены несколько примеров использования команды DevCon.

List all driver files

Следующая команда использует операцию DevCon DriverFiles для вывода списка имен файлов драйверов, используемых устройствами в системе. В команде используется подстановочный знак (*) для обозначения всех устройств в системе. Поскольку вывод обширен, команда использует символ перенаправления (>) для перенаправления вывода в справочный файл, driverfiles.txt.

devcon driverfiles * > driverfiles.txt

Следующая команда использует операцию статуса DevCon для определения статуса всех устройств на локальном компьютере. Затем он сохраняет статус в файле status.txt для регистрации или последующего просмотра. В команде используется подстановочный знак (*) для обозначения всех устройств и символ перенаправления (>) для перенаправления вывода в файл status.txt.

devcon status * > status.txt

Следующая команда включает все принтерные устройства на компьютере, указав класс настройки принтера в команде DevCon Enable. В команде есть параметр / r, который перезагружает систему, если необходимо сделать включение эффективным.

devcon /r enable = Printer

Следующая команда использует операцию DevCon Install для установки клавиатуры на локальный компьютер. Команда включает полный путь к файлу INF для устройства (keyboard.inf) и идентификатор оборудования (* PNP030b).

devcon /r install c:\windows\inf\keyboard.inf *PNP030b

Следующая команда просканирует компьютер на наличие новых устройств.

devcon scan

Следующая команда повторно просканирует компьютер на наличие новых устройств.

devcon rescan

Реестр - один из ключевых элементов в системе Windows. Он содержит много информации о различных аспектах операционной системы. Почти все приложения, установленные в системе Windows, в той или иной форме взаимодействуют с реестром.

Реестр содержит два основных элемента: ключи и значения. Registry keys объекты-контейнеры, похожие на папки. Registry valuesявляются неконтейнерными объектами, похожими на файлы. Ключи могут содержать значения или дополнительные ключи. Ссылки на ключи имеют синтаксис, аналогичный именам путей в Windows, с использованием обратной косой черты для обозначения уровней иерархии.

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

S.No Типы реестра и описание
1 Чтение из реестра

Чтение из реестра выполняется с помощью команды REG QUERY.

2 Добавление в реестр

Добавление в реестр выполняется с помощью команды REG ADD.

3 Удаление из реестра

Удаление из реестра производится с помощью команды REG DEL.

4 Копирование ключей реестра

Копирование из реестра выполняется с помощью команды REG COPY.

5 Сравнение ключей реестра

Сравнение ключей реестра выполняется с помощью команды REG COMPARE.

Пакетный скрипт имеет возможность работать с настройками сети. Команда NET используется для обновления, исправления или просмотра сети или сетевых настроек. В этой главе рассматриваются различные параметры, доступные для команды net.

S.No Команды и описание .NET
1 ЧИСТЫЕ СЧЕТА

Просмотр текущего пароля и ограничений входа в систему для компьютера.

2 КОНФИГУРАЦИЯ СЕТИ

Отображает настройки вашего текущего сервера или рабочей группы.

3 ЧИСТЫЙ КОМПЬЮТЕР

Добавляет или удаляет компьютер, подключенный к контроллеру домена Windows.

4 ЧИСТЫЙ ПОЛЬЗОВАТЕЛЬ

Эта команда может использоваться для следующих

Просмотр сведений об определенной учетной записи пользователя.

5 NET STOP / START

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

6 ЧИСТАЯ СТАТИСТИКА

Отображение сетевой статистики рабочей станции или сервера.

7 ЧИСТЫЕ ИСПОЛЬЗОВАНИЯ

Подключает или отключает ваш компьютер от общего ресурса или отображает информацию о ваших подключениях.

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

Синтаксис

PRINT [/D:device] [[drive:][path]filename[...]]

Где / D: устройство - указывает устройство печати.

пример

print c:\example.txt /c /d:lpt1

Приведенная выше команда распечатает файл example.txt на параллельный порт lpt1.

Управление принтером из командной строки

Начиная с Windows 2000, многие, но не все, параметры принтера можно настроить из командной строки Windows с помощью PRINTUI.DLL и RUNDLL32.EXE.

Синтаксис

RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry [ options ] [ @commandfile ]

Если некоторые из доступных опций следующие:

  • /dl - Удалить локальный принтер.

  • /dn - Удалить подключение к сетевому принтеру.

  • /dd - Удалить драйвер принтера.

  • /e - Показать настройки печати.

  • /f[file] - Либо файл inf, либо файл вывода.

  • /F[file] - Расположение INF-файла, от которого может зависеть INF-файл, указанный с помощью / f.

  • /ia - Установите драйвер принтера с помощью файла inf.

  • /id - Установите драйвер принтера с помощью мастера добавления драйвера принтера.

  • /if - Установите принтер с помощью файла inf.

  • /ii - Установите принтер с помощью мастера добавления принтера с файлом inf.

  • /il - Установите принтер с помощью мастера добавления принтера.

  • /in - Добавить подключение к сетевому принтеру.

  • /ip - Установите принтер с помощью мастера установки сетевого принтера.

  • /k - Распечатать тестовую страницу на указанном принтере, не может быть объединена с командой при установке принтера.

  • /l[path] - Путь к источнику драйвера принтера.

  • /m[model] - Название модели драйвера принтера.

  • /n[name] - Имя принтера.

  • /o - Отображение просмотра очереди печати.

  • /p - Показать свойства принтера.

  • /Ss - Сохраните настройки принтера в файл.

  • /Sr - Восстановить настройки принтера из файла.

  • /y - Установить принтер по умолчанию.

  • /Xg - Получить настройки принтера.

  • /Xs - Установите настройки принтера.

Проверка наличия принтера

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

Существование принтера можно оценить с помощью файла RUNDLL32.EXE PRINTUI.DLL, который используется для управления большинством настроек принтера.

пример

SET PrinterName = Test Printer
SET file=%TEMP%\Prt.txt
RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry /Xg /n "%PrinterName%" /f "%file%" /q

IF EXIST "%file%" (
   ECHO %PrinterName% printer exists
) ELSE (
   ECHO %PrinterName% printer does NOT exists
)

Вышеупомянутая команда сделает следующее -

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

  • Команды RUNDLL32.EXE PRINTUI.DLL будут использоваться, чтобы проверить, существует ли принтер на самом деле, отправив параметры конфигурации файла в файл Prt.txt.

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

Сообщения об ошибках

Чтобы обнаружить источник сообщения, выполните следующие действия:

Step 1 - УДАЛИТЬ линию @ECHO OFF, т.е. REM @ECHO OFF или :: @ECHO OFF.

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

test.bat > batch.log 2>&1

Step 3 - Найдите в файле batch.log сообщения об ошибках.

Step 4- Проверьте предыдущую строку на наличие непредвиденных или недопустимых команд, переключателей командной строки или значений; Обратите особое внимание на значения любых переменных среды, используемых в команде.

Step 5 - Исправьте ошибку и повторяйте этот процесс, пока все сообщения об ошибках не исчезнут.

Сложные командные строки

Другой распространенный источник ошибок - это неправильно перенаправленные команды, такие как, например, «вложенные» команды FIND или FINDSTR с неверными строками поиска, иногда внутри цикла FOR / F.

Чтобы проверить правильность этих сложных команд, выполните следующие действия:

Step 1 - Вставьте «строки проверки команд» непосредственно перед строкой, в которой используется сложный набор команд.

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

TYPE %Temp%.\apipaorg.reg
ECHO.================================================ TYPE %Temp%.\apipaorg.reg 
| FIND 
"[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TCPIP\Parameters\Interfaces\"

Step 2 - Следуйте процедуре, чтобы найти источники сообщений об ошибках, описанные выше.

Step 3- Обратите особое внимание на вывод «упрощенных» командных строк: соответствует ли вывод ожидаемому формату? Является ли значение или позиция «токена» ожидаемыми?

Подпрограммы

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

Чтобы выяснить, что вызывает неправильный вызов подпрограммы, выполните следующие действия:

Step 1 - Добавить и сбросить переменную счетчика в начале скрипта -

SET Counter = 0

Step 2 - Увеличивайте счетчик каждый раз, когда вызывается подпрограмма, вставляя следующую строку в начало подпрограммы

SET /A Counter+=1

Step 3- Вставить следующую строку сразу после инкремента счетчика, содержащую только команду SET; это перечислит все переменные среды и их значения.

Step 4 - Следуйте процедуре, чтобы найти источники сообщений об ошибках, описанные выше.

Версии Windows

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

В следующем примере показано, как проверить различные версии операционной системы, чтобы проверить соответствующие версии Windows.

@ECHO OFF
:: Check for Windows NT 4 and later

IF NOT "%OS%"=="Windows_NT" GOTO DontRun
:: Check for Windows NT 4
VER | FIND "Windows NT" >NUL && GOTO DontRun
:: Check for Windows 2000
VER | FIND "Windows 2000" >NUL && GOTO DontRun
:: Place actual code here . . .
:: End of actual code . . .
EXIT

:DontRun
ECHO Sorry, this batch file was written for Windows XP and later versions only

Вход в систему возможен в пакетном сценарии с помощью команды перенаправления.

Синтаксис

test.bat > testlog.txt 2> testerrors.txt

пример

Создайте файл с именем test.bat и введите в него следующую команду.

net statistics /Server

Приведенная выше команда содержит ошибку, потому что параметр команды net statistics задан неверным способом.

Вывод

Если команда с указанным выше файлом test.bat запускается как

test.bat > testlog.txt 2> testerrors.txt

И вы открываете файл testerrors.txt, вы увидите следующую ошибку.

The option /SERVER is unknown.

Синтаксис этой команды -

NET STATISTICS
[WORKSTATION | SERVER]

Чтобы получить дополнительную помощь, введите NET HELPMSG 3506.

Если вы откроете файл с именем testlog.txt, он покажет вам журнал выполненных команд.

C:\tp>net statistics /Server