Руководство командная строка windows if

Главная‎ > ‎CMD‎ > ‎

IF

Обработка условий в пакетных программах.

Синтаксис

if [noterrorlevel число команда [ else выражение]

if [notстрока1==строка2 команда [ else выражение]

if [notexist имя_файла команда [ else выражение]

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

if [/iстрока1 оп_сравнения строка2  команда [else выражение]

if cmdextversion число команда [else  выражение]

if defined переменная команда [else  выражение]

Параметры

not
Задает выполнение команды только в случае невыполнения условия.
errorlevel число
Условие выполняется, если предыдущая команда, обработанная интерпретатором команд Cmd.exe, завершилась с кодом, равным или большим числа.
команда
Команда, которая должна быть обработана в случае выполнения условия.
строка1==строка2
Условие выполняется, если строки строка1 и строка2 совпадают. Строки могут быть заданы явно или могут быть пакетными переменными (например,%1). Явно заданные строки нет необходимости заключать в кавычки.
exist имя_файла
Условие выполняется, если существует файл с именем имя_файла.
оп_сравнения
Трехзначный оператор сравнения. В следующей таблице перечислены допустимые значения оп_сравнения.

Оператор Описание
EQU равно
NEQ не равно
LSS меньше
LEQ меньше или равно
GTR больше
GEQ больше или равно
/i
Сравнение строк без учета регистра знаков. Параметр /i можно использовать в конструкции string1==string2 команды if. Эти сравнения являются общими. Если и строка1, и строка2 состоят из цифр, строки преобразовываются в числа и выполняется сравнение чисел.
cmdextversion число
Условие выполняется, только если номер внутренней версии, связанный с расширениями командного процессора Cmd.exe, равен или больше числа. первая версия имела номер 1. Номер версии увеличивается на 1 при внесении в расширения командного процессора значительных изменений. Условие сcmdextversion не выполняется, если расширения командного процессора запрещены (по умолчанию они разрешены).
defined переменная
Условие выполняется, если переменная определена.
выражение
Команда и все ее параметры для обработке в командной строке при выполнении оператора else.
/?
Отображение справки в командной строке.

Заметки

  • Если условие, заданное в команде if, выполняется, будет выполнена команда, следующая за условием. Если условие не выполняется, команда, заданная в операторе if, пропускается, а управление переходит к команде оператора else, если она задана.
  • Когда программа завершается, она возвращает код завершения. С помощью параметра errorlevel коды завершения можно использовать в качестве условий.
  • Использование команды defined переменная

    При использовании команды defined переменная добавляются следующие три переменные: %errorlevel%%cmdcmdline% и %cmdextversion%.

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

    goto answer%errorlevel%
    :answer0
    echo Код возврата программы равен 0
    :answer1
    echo Код возврата программы равен 1
    goto end
    :end
    echo Готово!

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

    
    if %errorlevel% LEQ 1 goto okay
    
    

    %cmdcmdline% замещается исходной командной строкой, переданной Cmd.exe, до ее обработки в Cmd.exe, если только уже не существует переменная среды с именем cmdcmdline. В этом случае будет использовано значение cmdcmdline.

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

  • Использование оператора else

    Оператор else должен размещаться в той же строке, что и команда if. Пример:

    
    IF EXIST имя_файла. (
    del имя_файла.
    ) ELSE (
    echo имя_файла. отсутствует.
    )
    
    

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

    IF EXIST имя_файла. del имя_файла. ELSE echo имя_файла. отсутствует

    Приведенный ниже пример не будет работать, поскольку команда else должна находиться в той же строке, что и команда if:

    
    IF EXIST имя_файла. del имя_файла.
    ELSE echo имя_файла. отсутствует
    
    

    Если необходимо разместить всю инструкцию в одной строке, можно использовать следующую правильную форму исходной инструкции:

    IF EXIST имя_файла (del имя_файла) ELSE echo имя_файла отсутствует

Примеры

Если файл Product.dat не удается найти, появится следующее сообщение:

if not exist product.dat echo Не найден файл данных

Если в приведенном ниже примере при форматировании диска в дисководе A возникнет ошибка, будет выведено сообщение об ошибке:

:begin
@echo off
format a: /s
if not errorlevel 1 goto end
echo Ошибка при форматировании.
:end
echo Конец пакетной программы.

Если ошибка не возникнет, сообщение об ошибке выведено не будет.

Команда if не может быть использована непосредственно для проверки существования каталога, но в каждом каталоге существует устройство (NUL). Следовательно, существование каталога может быть проверено, как показано ниже. В следующем примере проверяется наличие каталога:

if exist c:mydirnul goto process

Comments

  • Главная

    • AD

      • Как корректно удалить профиль

      • Отображение дерева в AD

        • Дерево Active Directory в Windows Form

        • Отображение Дерева AD на web странице

      • Получение списка пользователей

      • Проект Адресная книга

        • Данные из АД в виде Справочника

          • WEB часть адресной книги

          • Набор вспомогательных классов

            • Класс работы с XML таблицами

            • Класс работы с конфигурацией

            • Класс чтение Active Directory

          • Создать Windows Service

      • Прячим пароли в поток файла

      • Чиним вкладку History в Internet Explorer

      • Чтение Active Directory с помощью C#

        • Универсальный метод чтения данных из AD

    • android

      • 1) Создаем проект в AndroidStudio

      • 2) Описание проекта в AndroidStudio

      • 3) Добавляем OpenGL в проект

      • OpenGL

        • Рисуем на экране OpenGL

      • Методы окна (активности) Android

      • Проект игры ХО

    • C#

      • OpenTK

        • 01) Установка OpenTK

        • 02) Математические функции OpenTK

        • 03) Графические функции OpenTK

        • 04) Материалы (текустуры) OpenTK

        • 05) Буфер кадра

        • 06) Геометрические фигуры OpenTK

        • 07) Буфер вершин в OpenTK

        • 08) Смещение массивов в OpenTK

        • 09) Массивы вершин в OpenTK

        • 10) Рисование в OpenTK

        • 11) Звук в OpenTK

        • 12) Обработка ввода OpenTK

        • 12) Расширенные возможности OpenTK

      • SharpDX

        • Библиотека классов

          • SharpDX пространство имен

            • AngleSingle структура (SharpDX)

      • SharpGL

        • DrawText

      • Асоциации файлов с приложениями

      • Из целых чисел в двоичный код

      • Команды Ping и DNS на языке C#

      • Пишем свой клиент — сервер

        • 1) Запускаем прослушку порта

      • Работа с DSN именами в ODBC

        • 1) Создание DSN источника в ODBC

      • Размешаем иконку в панели уведомлений

      • Рекурсивный поиск файлов и папок

      • Сеть

        • Общий пинг сети

      • Файл настроек на основе XML

      • Файл настроек в виде XML

    • CMD

      • Append

      • Arp

      • Assoc

      • At

      • Atmadm

      • Attrib

      • Bootcfg

      • Cacls

      • Call

      • CHANGE

      • Chcp

      • Chdir (Cd)

      • Chkdsk

      • Chkntfs

      • Choice

      • Cipher

      • Cls

      • Cmd

      • Cmdkey

      • Cmstp

      • Color

      • Comp

      • Compact

      • Convert

      • Copy

      • Cprofile

      • CScript

      • Date

      • Debug

        • allocate expanded memory

        • assemble

        • compare

        • deallocate expanded memory

        • display expanded memory status

        • dump

        • enter

        • fill

        • go

        • hexadecimal

        • input

        • load

        • move

        • name

        • output

        • proceed

        • quit

        • register

        • trace

        • unassemble

        • write

        • мар expanded memory pages

      • Defrag

      • Del

      • Dir

      • Diskcomp

      • Diskcopy

      • DiskPart

      • Doskey

      • Driverquery

      • Echo

      • Edit

      • Endlocal

      • Eventcreate

      • Eventquery

      • Eventtriggers

      • Evntcmd

      • Exe2bin

      • Exit

      • Expand

      • Fc

      • Find

      • Findstr

      • Finger

      • Flattemp

      • For

      • Forcedos

      • FORFILES

      • Format

      • Freedisk

      • Fsutil

        • behavior

        • dirty

        • file

        • fsinfo

        • hardlink

        • objectid

        • quota

        • reparsepoint

        • sparse

        • usn

        • volume

      • Ftp

        • Подкоманды команды Ftp

          • append

          • ascii

          • bell

          • binary

          • bye

          • cd

          • close

          • debug

          • delete

          • dir

          • disconnect

          • Ftp: !

          • get

          • glob

          • hash

          • help

          • lcd

          • literal

          • ls

          • mdelete

          • mdir

          • mget

          • mkdir

          • mls

          • mput

          • open

          • prompt

          • put

          • pwd

          • quit

          • quote

          • recv

          • remotehelp

          • rename

          • rmdir

          • send

          • status

          • trace

          • type

          • user

          • verbose

      • Ftype

      • Getmac

      • Goto

      • Gpresult

      • Gpupdate

      • Graftabl

      • Helpctr

      • Hostname

      • IF

      • Ipconfig

      • Ipseccmd

      • Ipxroute

      • Irftp

      • Label

      • Loadfix

      • Lodctr

      • Logman

      • Lpq

      • Lpr

      • Macfile

      • Mkdir

        • Mmc

      • Mode

      • More

      • Mountvol

      • Move

      • Msg

      • Msiexec

      • Msinfo32

      • Mstsc

      • Nbtstat

      • Net

        • accounts

        • computer

        • config

        • continue

        • file

        • group

        • help

        • helpmsg

        • localgroup

        • name

        • pause

        • print

        • send

        • session

        • share

        • start

        • statistics

        • stop

        • time

        • use

        • user

        • view

      • Netstat

      • Nslookup

      • Ntbackup

      • Ntcmdprompt

      • Openfiles

      • Pagefileconfig

      • path

      • Pathping

      • Pause

      • Pbadmin

      • Pentnt

      • Perfmon

      • Ping

      • Popd

      • Print

      • Prncnfg

      • Prndrvr

      • Prnjobs

      • Prnmngr

      • Prnqctl

      • Prompt

      • Pushd

      • Rasdial

      • Recover

      • Reg

      • Regsvr32

      • Relog

      • Rem

      • Rename

      • Replace

      • Reset session

      • Rmdir

      • ROBOCOPY

      • Route

      • Rsm

      • Runas

      • Rundll32

      • SC

      • Schtasks

      • Secedit

      • Set

      • Setlocal

      • SetX

      • sfc

      • Shadow

      • Shift

      • Shutdown

      • Sort

      • Start

      • Subst

      • Systeminfo

      • Taskkill

      • Tasklist

      • Tcmsetup

      • Telnet

      • Tftp

      • Time

      • TIMEOUT

        • Title

      • Tracerpt

      • Tree

      • Tscon

      • Tskill

      • Tsprof

      • Tsshutdn

      • Type

      • Typeperf

      • Unlodctr

      • Ver

      • Vol

      • Vssadmin

      • W32tm

      • WMIC

        • Вызов WMIC

        • Синтаксис команды WMIC

        • Терминология

      • Xcopy

      • Команды запросов служб терминалов

        • process

        • session

        • termserver

        • user

      • Справка

    • Exchange

    • freebsd

      • FreeBSD. Локаль

      • Ubuntu RDP из Windows

      • Добавление новых пользователей в MySQL

        • Создание и использование базы данных

      • Руссификация FreeBSD

      • Снятие блока пользователя в Dropal

      • установка web сервера

      • Установка и настройка phpMyAdmin

    • OpenGL

      • C#

        • Первый проект OpenGL

        • Рисуем точки с помощью OpenGL

          • Упражнение звездное небо

        • Точка основа графики

      • OpenGL загрузка ресурсов

        • OpenGL загрузка формата Obj

      • Загрузка текстуры

      • Загрузка формата obj

      • Окно OpenGL

      • Рисование примитивов в OpenGL

      • С++

        • Наденные уроки

          • 01. Инициализация OpenGL

          • 02. Отображение полигонов

          • 03. Отображение цветов

          • 04. Вращение полигонов

          • 05. Создание фигур в 3D

          • 06. Наложение текстуры

          • 07. Фильтрация текстур

          • 08. Смешивание

          • 09. Передвижение изображений

          • 10. Загрузка и перемещение в 3D

          • 11. Эффект «флага» на OpenGL

          • 12. Использование списков

          • 13. Растровые шрифты

          • 14. Векторные шрифты

          • 15. Текстурные шрифты

          • 16 Эффект тумана

          • 17 Двухмерные шрифты

          • 18. Квадратирование

          • 19. Машина моделирования частиц

          • 20. Маскирование

          • 21. Линии, сглаживание

          • 22. Наложение микрорельефа

          • 23. Квадратирование со сферическим наложением

          • 24. Вырезка и Загрузка TGA

          • 25. Морфинг и загрузка объектов

          • 26. Реалистичное отражение

          • 27. Тени d OpenGL

          • 28. Фрагменты поверхностей Безье

          • 29. Блиттер-функция

          • 30. Определение столкновений в OpenGL

          • 31. Визуализация моделей

          • 32. Выбор, альфа смешивание

          • 34. Построение красивых ландшафтов

          • 35. Проигрывание AVI файлов в OpenGL.

          • 36. Радиальное размытие

          • 37. Мультипликационное закрашивание

          • 39. Введение в физический симулятор

          • 40. Моделирование движений веревки

          • 41. Объемный туман и загрузка изображений

          • 43. FreeType шрифты в OpenGL

          • 46. Полноэкранное сглаживание

          • 48. Вращение объектов

          • 50 Улучшенная обработка ввода с использованием DirectInput

          • 51 Отсечение по пирамиде видимости в OpenGL

        • Описание PIXELFORMATDESCRIPTOR

        • Первый проект c OpenGL

          • Пример в Embarcadero Rad Studio

          • Пример в Microsoft Visual Studio

      • Функции OpenGL библиоеки GL

        • glAccum

        • glAlphaFunc

        • glAreTexturesResident

        • glArrayElement

        • glBegin

        • glBegin() glEnd()

        • glBindTexture

        • glBitmap

        • glBlendFunc

        • glCallList

        • glCallLists

        • glClear

        • glClearAccum

        • glClearColor

        • glClearDepth

        • glClearIndex

        • glClearStencil

        • glClipPlane

        • glColor

        • glPointSize

        • glVertexPointer

    • PowerShell

      • about_aliases

      • about_Arithmetic_Operators

      • about_Arrays

      • about_assignment_operators

      • about_Automatic_Variables

      • about_Break

      • about_Command_Precedence

      • about_Command_Syntax

      • about_Comment_Based_Help

      • about_CommonParameters

      • about_Comparison_Operators

      • about_Continue

      • about_Core_Commands

      • about_Data_Sections

      • about_Debuggers

      • about_Do

      • about_Environment_Variables

      • about_Escape_Characters

      • about_EventLogs

      • about_Execution_Policies

      • about_For

      • about_Foreach

      • about_Format.ps1xml

      • about_Functions

      • about_Functions_Advanced

      • about_Functions_Advanced_Methods

      • about_Functions_Advanced_Parameters

      • about_Functions_CmdletBindingAttribute

      • about_Hash_Tables

      • about_History

      • about_If

      • about_Job_Details

      • about_Jobs

      • about_join

      • about_Language_Keywords

      • about_Line_Editing

      • about_Locations

      • about_Logical_Operators

      • about_methods

      • about_Modules

      • about_Objects

      • about_Operators

      • about_Parameters

      • about_parsing

      • about_Path_Syntax

      • about_pipelines

      • about_preference_variables

      • about_Profiles

      • about_Prompts

      • about_Properties

      • about_Providers

      • about_PSSession_Details

      • about_PSSessions

      • about_PSSnapins

      • about_Quoting_Rules

      • about_Redirection

      • about_Ref

      • about_Regular_Expressions

      • about_Remote

      • about_Remote_FAQ

      • about_Remote_Jobs

      • about_Remote_Output

      • about_Remote_Requirements

      • about_Remote_Troubleshooting

      • about_Requires

      • about_Reserved_Words

      • about_Return

      • about_Scopes

      • about_Script_Blocks

      • about_Script_Internationalization

      • about_Scripts

      • about_Session_Configurations

      • about_signing

      • about_Special_Characters

      • about_Split

      • about_Switch

      • about_Throw

      • about_Transactions

      • about_Trap

      • about_Try_Catch_Finally

      • about_Type_Operators

      • about_Types.ps1xml

      • about_Variables

      • about_While

      • about_Wildcards

      • about_Windows_PowerShell_ISE

      • about_WMI_cmdlets

      • about_WS-Management_Cmdlets

      • Get-Help

      • out_Windows_PowerShell_2.0

    • SQL скрипты

      • MS SQL поиск слова по всем таблицам

    • Базы данных

      • Microsoft SQL Server

        • СУБД

          • Язык SQL

            • Оператор SELECT

            • Оператор условия WHERE

        • Установка SQL сервера

      • Проекты по БД

        • Проект магазина

          • 01) Описание типов данных

          • 02) Создание таблиц

            • a) Microsoft Access 2007/2010

            • b) SQL Server 2008 ( интерфейс )

          • 03) Связь и зависимость данных

            • a) Microsoft Access 2007/2010

            • b) SQL Server 2008 ( интерфейс )

          • 04) Добавление данных

            • a) Microsoft Access 2007/2010

            • b) SQL Server 2008

      • Простое заполнение DataGridView из массива

      • Теория по базам данных

        • Варианты хранения данных

          • База данных

          • Основные модели баз данных

          • Файл

            • 1) Сохранение и загрузка в XML

            • 2) Добавление записей в XML

        • Добавление заказа

        • История хранилищ данных

        • Классификация БД по среде хранения

        • Классификация БД по степени распределённости

        • Преимущества баз данных

        • Система управления базами банных

        • Схема модулей СУБД

        • Функции СУБД

    • Информационная безопастность

      • Стеганография

    • Как делать простые опросы по E-Mail.

    • Найденные фичи

      • Про наложение текстур

      • Проблемы с офисом

    • Основы программирования

      • 01) Введение

      • 02) Принципы построения ЭВМ

      • 03) Поколения языков

      • 04) Компиляторы

      • 05) Интерпретаторы

      • 06) Правила программирования

      • 07) Работа с данными

      • 08) Операторы языка С++

        • 8.1) Операторы условия

        • 8.2) Операторы циклов

        • 8.3) Операторы перехода

        • 8.4) Создание калькулятора

      • 09) Создание заголовочных файлов

      • 10) Определение размера Массива

      • 11) Русифицируем консоль

      • 12) Интерактивный интерфейс

      • 13) Получения кода клавиш

      • 13) Работа с файловой системой

        • 13.1) Запись/чтение файла

      • 14) Четное / нечетное число

      • 15) Нахождение Max/Min

      • Visual Studio Удаленная отладка сервисов

      • ВОПРОСЫ ДЛЯ ЗАЧЕТА

      • Загрузка картинки в VCL From

      • Знакомство с средой разработки

      • Основы синтаксиса языка C++

      • Создать переносимый проект Emdarcadero

      • Структурные типы данных

    • Отключение гибернации в Windows 7 8 10

    • Проекты

      • Arcanoid

      • PacMan

        • Вращение персонажа

          • Плавное перемещение персонажа

        • Разметка игрового поля

        • Редактор карт

          • Функция загрузки карты

          • Функция сохранения карты

        • Рисуем бонус

        • Рисуем Главного героя

          • Рисуем дверь на выход

        • Рисуем одну часть стенки

        • Рисуем приведение

        • Рисуем точку

        • Функция движения духов

      • Змейка

        • Движение змейки по полю

        • Пересечение змеи и зайцев

        • Расставляем зайцев

        • Создаем заготовку проекта

        • Функция движения змейки

        • Функция добавления части тела змейки

          • Реакция на клавиатуру

      • Морской бой

        • Игровой процесс

          • Выбор уровня при старте

          • Уровни сложности

            • Легкий режим игры

            • Меню выбора сложности

            • Средний и тяжелый уровень

        • Контроль правил оппонента

        • Поле игрока

        • Поле игры

          • Генератор для оппонента

          • Подсчет очков игры

        • Расстановка кораблей игрока

          • Генератор карты

          • Контроль правил

          • Ручная установка краблей

          • Установка кораблей

          • Функции редактора карты

        • Расстановка кораблей ПК

          • Генератор карты ПК

          • Контроль правил версия 2

          • Установка кораблей в поле ПК

        • Режимы игры

          • Функция отображения меню

            • Главное меню игры

        • Фугасный снаряд

      • план моей игры

      • Проект Bloks

      • Проект XO

      • Сетевой клиент сервер

        • Отправка сообщения клиенту

        • Получения сообщения от клиента

        • Серверная часть

      • Создание сетевого чата (Delphi)

    • Работа со ссылками

      • C# получение ссылок со страницы сайта

      • C# получение ссылок со страницы сайта 2

      • Размещение библиотек в GAC

      • С# скачивание фалов с сайтов

    • Теория Алгоритмов

      • 1) Введение

      • 2) Этапы решения задач

      • 3) Языки описания алгориомов

      • 4) Виды алгоритмов

        • 4) Практика

          • 1) Линейный алгоритм

          • 2) Применение циклов

        • 4.1) Алгоритм ветвления 1

        • 4.2) Алгоритм ветвления 2

      • 4) Перестановка значений

      • 5) Перебор элементов массива

      • 6) Методы сортировки

        • 6.1) Пузырьковая сортировка

        • 6.2) Сортировка вставками

          • 6.2.1) Реализация метода

        • 6.3) Сортировка выборками

      • Быстрая сортировка

      • ВОПРОСЫ ДЛЯ ЭКЗАМЕНА

      • Сортировка кучей

      • Сортировка слиянием

  • Обратная связь

На чтение 5 мин Просмотров 1.7к. Опубликовано 22.12.2014

В этой статье мы рассмотрим условный оператор if командной строки (CMD). Как и в любом другом языке программирования, условные оператор служит для проверки заданного условия и в зависимости от результат, выполнять то, или иное действие.

Условный оператор cmd if содержит практически тот же синтаксис, что и аналогичные конструкции языков VBScript (смотри статью “Урок 5 по VBScript: Условный оператор if…else и select…case”) и Jscript (статья “Урок 8 по JScript: Описание условного оператора if…else, арифметических и логических операторов”) сервера сценариев Windows Script Host.

Оператор if командная строка

if условие (оператор1) [else (оператор2)]

Вначале идет проверка условия, если оно выполняется, идет переход к выполнению оператора1, если нет – к оператору2.  Если после ключевого слова if прописать not (if not), то: произойдет проверка условия, если оно не выполниться – переход к оператору1, если условие выполняется – переход к оператору2. Использование круглых скобок не является обязательным, но если вам нужно после проверки условия выполнить сразу несколько операторов cmd if, то круглые скобки необходимы.

if командная строка

Давайте откроем редактор notepad++ и пропишем в нем такой код:

@echo off
if"%1"=="1"(echo odin) else (echo dva)

Как я уже сказал, мы можем использовать не один оператор (командной строки) cmd if, а несколько, посмотрите на данный пример:

@echo off
if"%1"=="1"(hostname & ver & ipconfig /all) else (netstat -a)

Тут, как и прежде идет проверка передаваемого сценарию параметра, если значение равно 1, то произойдет последовательное выполнение трех команд:

  • hostname – выводит имя компьютера
  • ver – выводит версию ОС
  • ipconfig /all – выводит настройки сети

Для последовательного выполнения команд мы использовали знак конкатенации (объединения) “&”. При невыполнении условия произойдет вызов утилиты netstat.

Что бы проверить существование переменной, используются операторы if defined (если переменная существует) и if not defined (если переменная не существует):

@echo off
set Var1=100
if defined Var1 (echo%Var1%)
set Var1=
if not defined Var1 (echo NOT EXIST!!! Var1)

Если вы запустите на выполнение данный код, то в окне командной строки будут выведены две строки:

100
NOT EXIST!!! Var1

Вначале, в сценарии происходит создание переменной Var1 и присвоение ей значения 100, далее идет проверка: если переменная Var1 существует, вывести ее значение. Потом мы удаляем переменную и снова запускаем проверку: если переменная Var1 не существует, вывести строку NOT EXIST!!! Var1.

cmd if

Мы вправе использовать условный оператор if как вложенный:

@echo off
if"%1"=="1"(@if"%2"=="2"(hostname & ver) else (ver)) else (hostname & ver & netstat -a)

В данном примере, первый оператор командной строки if проверяет, равен ли первый аргумент 1, если да, то идет выполнение второго условно оператора и проверка на значение другого аргумента.

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

Давайте теперь посмотрим на такой пример:

@echo off
if"%1"=="slovo"(echo slovo) else (@if "%1"=="SLOVO"(echo SLOVO) else (echo NOT DATA!!!))

Тут идет проверка первого аргумента, и регистр строки учитывается, что бы отключить учет регистра при проверке строк, после оператора if нужно прописать ключ /I:

@echo off
if/I "%1"=="slovo"(echo slovo) else (if/I "%1"=="SLOVO"(echo SLOVO) else (echo NOT DATA!!!))

В данном случае, передадим мы строку SLOVO, slovo, SloVo и так далее, все ровно на экран консоли выведется строка “slovo”, так как учет регистра знаков будет отключен.

Оператор if командная строка, операторы сравнения

Кроме оператора сравнения “==” можно использовать и другие операторы для проверки условия:

  • equ «Равно». Дает True, если значения равны
  • neq «Не равно». Дает True, если значения не равны
  • lss «Меньше». Дает True, если зпачение1 меньше, чем значение2
  • lcq «Меньше или равно». Дает True, если значепие1 равно или меньше, чемзначение2
  • gtr «Больше». Дает True, если значение1 больше, чем значение2
  • geq «Больше или равно». Дает True, если значепие1 равно или больше, чем значение2

cmd if else

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

Вызов внешних командных файлов

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

@ECHO OFF
CLS
REM Вывод списка log-файлов
DIR C:*.log
REM Передача выполнения файлу f.bat
f.bat
COPY A:*.* C:
PAUSE

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

(и все следующие за ней команды) никогда не будет выполнена.

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

Например:

@ECHO OFF
CLS
REM Вывод списка log-файлов
DIR C:*.log
REM Передача выполнения файлу f.bat
CALL f.bat
COPY A:*.* C:
PAUSE

В этом случае после завершения работы файла f.bat управление вернется в первоначальный файл на строку, следующую за командой CALL (в нашем примере это команда COPY A:*.* C: ).

Операторы перехода

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

Пусть имеется командный файл следующего содержания:

@ECHO OFF
COPY %1 %2
GOTO Label1
ECHO Эта строка никогда не выполнится
:Label1
REM Продолжение выполнения
DIR %2

После того, как в этом файле мы доходим до команды

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

REM Продолжение выполнения

В команде перехода внутри файла GOTO можно задавать в качестве метки перехода строку :EOF, которая передает управление в конец текущего пакетного файла (это позволяет легко выйти из пакетного файла без определения каких-либо меток в самом его конце).

Также для перехода к метке внутри текущего командного файла кроме команды GOTO можно использовать и рассмотренную выше команду CALL:

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

@ECHO OFF
ECHO %1
CALL :2 Копия-2
:2
ECHO %1

то на экран выведутся три строки:

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

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

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

Проверка значения переменной

Первый тип условия используется обычно для проверки значения переменной. Для этого применяются два варианта синтаксиса команды IF:

IF [NOT] строка1==строка2 команда1 [ELSE команда2]

(квадратные скобки указывают на необязательность заключенных в них параметров) или

IF [/I] [NOT] строка1 оператор_сравнения строка2 команда

Рассмотрим сначала первый вариант. Условие строка1==строка2 (здесь необходимо писать именно два знака равенства) считается истинным при точном совпадении обеих строк. Параметр NOT указывает на то, что заданная команда выполняется лишь в том случае, когда сравниваемые строки не совпадают.

Строки могут быть литеральными или представлять собой значения переменных (например, %1 или %TEMP% ). Кавычки для литеральных строк не требуются. Например,

IF %1==%2 ECHO Параметры совпадают!
IF %1==Петя ECHO Привет, Петя!

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

IF %MyVar%==C: ECHO Ура!!!

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

IF -%MyVar%==-C: ECHO Ура!!!

С помощью команд IF и SHIFT можно в цикле обрабатывать все параметры командной строки файла, даже не зная заранее их количества. Например, следующий командный файл (назовем его primer.bat) выводит на экран имя запускаемого файла и все параметры командной строки:

@ECHO OFF
ECHO Выполняется файл: %0
ECHO.
ECHO Файл запущен со следующими параметрами...
REM Начало цикла
:BegLoop
IF -%1==- GOTO ExitLoop
ECHO %1
REM Сдвиг параметров
SHIFT
REM Переход на начало цикла
GOTO BegLoop
:ExitLoop
REM Выход из цикла
ECHO.
ECHO Все.

Если запустить primer.bat с четырьмя параметрами:

то в результате выполнения на экран выведется следующая информация:

Выполняется файл: primer.bat

Файл запущен со следующими параметрами:
А
Б
В
Г

Все.

Рассмотрим теперь оператор IF в следующем виде:

IF [/I] строка1 оператор_сравнения строка2 команда

Синтаксис и значение операторов_сравнения представлены в табл. 3.2.

Таблица
3.2.
Операторы сравнения в IF

Оператор Значение
EQL Равно
NEQ Не равно
LSS Меньше
LEQ Меньше или равно
GTR Больше
GEQ Больше или равно

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

@ECHO OFF
CLS
IF -%1 EQL –Вася ECHO Привет, Вася!
IF -%1 NEQ –Вася ECHO Привет, но Вы не Вася!

Ключ /I, если он указан, задает сравнение текстовых строк без учета регистра. Ключ /I можно также использовать и в форме строка1==строка2 команды IF. Например, условие

будет истинным.

Бывает, что при написании командного файла (пакетного файла, bat файла, cmd файла) требуется записать в условном операторе IF более сложное условие, составленное с помощью операторов И и ИЛИ.

Как известно, bat файлы не имеют таких логических операторов, поэтому в них нельзя написать конструкции типа:

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

Надо сказать, что всё-таки командные файлы Windows предназначены для пакетного выполнения консольных команд, и задачи по расчету или обработке данных лучше писать в скриптах (PowerShell, WSH / JScript / VBScript), вызывая их из bat файла.

Ссылки для скачивания файлов находятся в конце статьи.

Оператор IF с логическим И (AND) в bat файле

Самый простой вариант – вложенное выполнение двух операторов IF:

То есть вместо and мы просто пишем if. Можно использовать не только проверку значения переменной, но и проверку наличия файла. Условий может быть больше двух.

Оператор IF с логическим ИЛИ (OR) в bat файле

С оператором OR так просто не получится, причем есть разные способы.

Способ 1 – через последовательные ИЛИ

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

В примере ниже значение переменной a сравнивается с тремя значениями, и для любого из value1, value2, value3 условие будет выполнено. А если задать a какое-то другое значение, например, set a=value4, то условие выполнено не будет, что нам и нужно:

Способ 2 — через И и НЕ

Этот способ основан на том факте, что логическую операцию ИЛИ можно представить через операции И и НЕ, например, a OR b эквивалентно NOT ( NOT A AND NOT B ). Оператор NOT уже есть в bat файлах, а оператор AND можно представить через последовательные IF, как мы видели выше.

Поэтому тот же результат можно получить по-другому:

Этот способ занимает немного меньше строк, чем предыдущий.

Файлы для скачивания

Все файлы, описанные в статье, можно скачать с Яндекс.Диска.

Обработка условий в пакетных программах.

Синтаксис

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

Параметры

not Задает выполнение команды только в случае невыполнения условия. errorlevel число Условие выполняется, если предыдущая команда, обработанная интерпретатором команд Cmd.exe, завершилась с кодом, равным или большим числа. команда Команда, которая должна быть обработана в случае выполнения условия. строка1==строка2 Условие выполняется, если строки строка1 и строка2 совпадают. Строки могут быть заданы явно или могут быть пакетными переменными (например, %1). Явно заданные строки нет необходимости заключать в кавычки. exist имя_файла Условие выполняется, если существует файл с именем имя_файла. оп_сравнения Трехзначный оператор сравнения. В следующей таблице перечислены допустимые значения оп_сравнения.

Оператор Описание
EQU равно
NEQ не равно
LSS меньше
LEQ меньше или равно
GTR больше
GEQ больше или равно

/i Сравнение строк без учета регистра знаков. Параметр /i можно использовать в конструкции string1==string2 команды if. Эти сравнения являются общими. Если и строка1, и строка2 состоят из цифр, строки преобразовываются в числа и выполняется сравнение чисел. cmdextversion число Условие выполняется, только если номер внутренней версии, связанный с расширениями командного процессора Cmd.exe, равен или больше числа. первая версия имела номер 1. Номер версии увеличивается на 1 при внесении в расширения командного процессора значительных изменений. Условие с cmdextversion не выполняется, если расширения командного процессора запрещены (по умолчанию они разрешены). defined переменная Условие выполняется, если переменная определена. выражение Команда и все ее параметры для обработке в командной строке при выполнении оператора else. /? Отображение справки в командной строке.

Заметки

  • Если условие, заданное в команде if, выполняется, будет выполнена команда, следующая за условием. Если условие не выполняется, команда, заданная в операторе if, пропускается, а управление переходит к команде оператора else, если она задана.
  • Когда программа завершается, она возвращает код завершения. С помощью параметра errorlevel коды завершения можно использовать в качестве условий.
  • Использование команды definedпеременная

При использовании команды defined переменная добавляются следующие три переменные: %errorlevel%, %cmdcmdline% и %cmdextversion%.

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

goto answer%errorlevel%
:answer0
echo Код возврата программы равен 0
:answer1
echo Код возврата программы равен 1
goto end
:end
echo Готово!

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

%cmdcmdline% замещается исходной командной строкой, переданной Cmd.exe, до ее обработки в Cmd.exe, если только уже не существует переменная среды с именем cmdcmdline. В этом случае будет использовано значение cmdcmdline.

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

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

Оператор else должен размещаться в той же строке, что и команда if. Пример:

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

IF EXIST имя_файла. del имя_файла. ELSE echo имя_файла. отсутствует

Приведенный ниже пример не будет работать, поскольку команда else должна находиться в той же строке, что и команда if:

Если необходимо разместить всю инструкцию в одной строке, можно использовать следующую правильную форму исходной инструкции:

IF EXIST имя_файла (del имя_файла) ELSE echo имя_файла отсутствует

Примеры

Если файл Product.dat не удается найти, появится следующее сообщение:

if not exist product.dat echo Не найден файл данных

Если в приведенном ниже примере при форматировании диска в дисководе A возникнет ошибка, будет выведено сообщение об ошибке:

:begin
@echo off
format a: /s
if not errorlevel 1 goto end
echo Ошибка при форматировании.
:end
echo Конец пакетной программы.

Если ошибка не возникнет, сообщение об ошибке выведено не будет.

Команда if не может быть использована непосредственно для проверки существования каталога, но в каждом каталоге существует устройство (NUL). Следовательно, существование каталога может быть проверено, как показано ниже. В следующем примере проверяется наличие каталога:

Далее кратко описаны полезные возможности, которые можно использовать в командных файлах (*.bat;*.cmd aka батники) операционных систем Windows 2000, XP, 2003 и более поздних.

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

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

Более подробную помощь нежели в данном обзоре можно найти в стандартной справке в каталоге Windows.
(Типичный путь к файлу справки: C:WINDOWSHelp
tcmds.chm. Если Windows установлена в каталог, отличный от C:WINDOWS, то ссылки на справку из данной страницы работать не будут. Потребуется открыть справку самостоятельно.)
В частности, крайне полезно почитать следующие разделы:

Справку по конкретной команде также всегда можно получить набрав в командной строке » /?».
Например, очень познавательно почитать то, что выдается в результате команд set /?, call /?, for /?, if /?.

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

Вывод
Текущий каталог
Параметры вызова сценариев

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

Параметр Значение
%0 d:deltalngscompile_all.cmd
%1 sol.dpr
%2 . (точка)
%3,%4,%5 и т.д. (пусты)
%* sol.dpr .

Современные ОС используют расширенный режим обработки параметров, в котором доступны следующие модификаторы:

Модификатор Описание
расширение %1 и удаление любых кавычек («»)
замена %1 полным путем
замена %1 именем диска
замена %1 путем без диска и имени файла
замена %1 именем файла без расширения
замена %1 расширением имени файла
замена полным путем, содержащим только короткие имена
замена %1 атрибутами файла
замена %1 датой и временем модификации файла
замена %1 размером файла
Поиск в каталогах, перечисленных в переменной среды PATH, замена %1 полным именем первого найденного файла. Если переменная среды не определена или поиск не обнаружил файлов, модификатор выдает пустую строку.

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

Модификатор Описание
полный путь (включая завершающий слэш) к каталогу выполняемого скрипта
имя файла первого параметра с расширением
размер файла второго параметра
замена %1 строкой, аналогичной результату работы программы dir
Проверка условий

Проверка существования файла:
if [not] exist имя_файла команда [else выражение]
Например: if exist $result$.txt del $result$.txt

Проверка кода возврата:
if [not] errorlevel число команда [else выражение]
Условие верно, если предыдущая обработанная команда завершилась с кодом, равным или большим значения число.
Например:

Использование меток

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

Запуск команд

Инструкция «cmd команда» запускает системный пакетный обработчик cmd.exe для выполнения команды команда.
Если вызов происходит из консоли, то используется имеющаяся, если нет — создается новая.
Ключи /c и /k указывают, что по завершении исполнения консоль нужно закрыть или оставить, соответственно.

Инструкция «start команда» запускает обработку команды команда в отдельном параллельном процессе.
Соответствующие ключи позволяют изменять приоритет запускаемого процесса.
Ключ /wait указывает, что запустившему процессу следует дождаться завершения запущенного.

Запускать новые командные сценарии из командных сценариев можно также двумя способами.
Первый: Второй:

Код возврата команд

Команда exit число прерывает исполнение текущего сценария с возвратом запустившему его процессу заданного кода выхода. По умолчанию производится прерывание сразу всей цепочки вызовов пакетных сценариев. Если необходимо завершить только текущий сценарий и возвратить управление в сценарий, вызвавший его командой call, то нужно использовать ключ /b команды exit. Для выхода из сценария с передачей вызвавшему процессу текущего значения %errorlevel% необходимо использовать команду goto :eof.

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

Копирование

Проверить, удачно ли выполнилась команда можно по коду возврата %errorlevel%.

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

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

Символ Синтаксис Определение
& [. ] команда1 & команда2 Выполняется первая команда, затем вторая команда.
&& [. ] команда1 && команда2 Вторая команда выполняется, только если первая была выполнена успешно.
|| [. ] команда1 || команда2 Вторая команда выполняется, только если первая не была выполнена (полученный код ошибки превышает ноль).
( ) [. ] ( команда1 & команда2 ) Используется для группировки или вложения команд.
; или , команда1 параметр1 ; параметр2 Используется для разделения параметров команды.

Примечание:
Амперсанд &, вертикальная черта | и скобки () являются специальными символами, которым должен предшествовать управляющий символ ^ или кавычки, если эти символы передаются в качестве аргументов.

Вот пример специализированного скрипта для сравнения файлов:

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

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

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

Псевдопеременные, такие как %CD%, %DATE%, %TIME%, %RANDOM%, %ERRORLEVEL%, обрабатываются особенным образом в зависимости от определенных условий.

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

Переменная Тип Описание
Локальная Возвращает путь к текущей папке.
Системная Возвращает имя компьютера.
Системная Возвращает текущую дату. Использует тот же формат, что и команда date /t .
Системная Возвращает код ошибки последней использовавшейся команды.
Системная Указывает путь поиска для исполняемых файлов.
Системная Возвращает произвольное десятичное число от 0 до 32767.
Системная Возвращает размещение системного каталога Windows.
и Системная и пользовательская Возвращает временные папки, по умолчанию используемые приложениями, которые доступны пользователям, выполнившим вход в систему. Некоторые приложения требуют переменную TEMP, другие — переменную TMP.
Системная Возвращает текущее время. Использует тот же формат, что и команда time /t .
Локальная Возвращает имя пользователя, выполнившего вход в систему.

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

Конструкция Назначение
%PATH:

10,5%

расширит действие переменной среды PATH, затем использует только 5 символов, которые начинаются с 11-го символа (пропустив 10) расширенного результата. Если длина не указана, по умолчанию используется оставшееся значение переменной. Если оба значения (длина и число пропускаемых символов) отрицательны, следующим используемым значением будет длина значения переменной среды, добавленной к указанному значению пропуска или указанной длины.

%PATH:

-10%

извлечет последние 10 символов переменной PATH

%PATH:

0,-2%

извлечет все символы переменной PATH, за исключением 2-х последних

Для установки значений переменных используется команда set.
Установка значений:
set переменная=значение
Показ значений:
set переменная
Показ значений всех переменных:
set (без параметров)
Проверка наличия переменной с заданным именем:
if defined переменная команда

Вычисление арифметических выражений

В следующей таблице представлены арифметические операторы, поддерживающие параметр /a , в порядке убывания приоритета.

Оператор Действие оператора
() группировка
!

унарные операторы

* / %
арифметические операторы

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

>
двоичный сдвиг

&
двоичное И

^
двоичное исключающее ИЛИ

|
двоичное ИЛИ

присваивание

,
разделитель операторов

При использовании символов & | % ^ заключайте выражение в кавычки.
Любые нечисловые строки в выражении считаются именами переменной среды, чьи значения преобразуются в числа до обработки. Если указано имя переменной среды, которое не определено в текущем окружении, ей присваивается значение нуля, что позволяет выполнять арифметические операции со значениями переменной среды без использования % для получения значения.

Пример использования вычисления выражений:

Потоки ввода/вывода

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

В следующей таблице представлены стандартные потоки.

Поток Номер дескриптора Описание
STDIN Стандартный ввод (только чтение)
STDOUT 1 Стандартный вывод (только запись)
STDERR 2 Вывод ошибок (только запись)

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

В следующей таблице представлены стандартные устройства.

Устройство Описание
CON Консоль (чтение с клавиатуры и вывод на экран)
NUL Пустота
PRN Принтер

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

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

Оператор перенаправления Описание
> Перенаправление вывода с затиранием.
Перенаправление ввода.
>> Перенаправление вывода с добавлением.
>& Считывает данные на выходе одного потока как входные данные для другого потока.
Считывает входные данные одного потока как выходные данные другого потока.
| Считывает выходные данные одной команды и записывает их на вход другой команды. Эта процедура известна под названием «канал».

Некоторые команды, такие как find, sort, more, называются фильтрами, т.к. они занимаются специализированной трансформацией входного потока в выходной.

Далее приведены некоторые примеры.

Типичный вызов при тестировании программистских задач.
(Ввод из input.txt, вывод в output.txt, вывод ошибок в никуда).

Вызов скрипта компиляции с перенаправлением потоков вывода и ошибок на дописывание в файл compile.log.

Дописывание содержимого одного файла в конец другого.

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

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

Организация циклов

Команда for позволяет произвести запуск некоторой команды для каждого элемента из заданного множества.
Синтаксис:

Параметры: < % переменная | %% переменная >Обязательный параметр. Замещаемый параметр. Используйте % переменная для выполнения команды for из командной строки. В пакетных файлах для команды FOR используется запись %%переменная вместо %переменная. Имена переменных учитывают регистр букв (%i отличается от %I). ( множество ) Обязательный параметр. Задает один или несколько файлов, каталогов, диапазон значений или текстовых строк, подлежащих обработке заданной командой. Скобки являются обязательными. команда Обязательный параметр. Задает команду, которая будет выполнена для каждого файла, каталога диапазона значений или текстовой строки, включенной в указанный параметр ( множество ) . ПараметрыКоманднойСтроки Задает параметры командной строки, которые используются с указанной командой.
Подробнее команда описана в справке. Здесь приведены несколько примеров, иллюстрирующих ее возможности.

Перебор фиксированного множества параметров.

Итерация по файлам.

Итерация по каталогам.

Итерация и разбор файлов

Набор содержит имена одного или нескольких файлов, которые по очереди открываются, читаются и обрабатываются. Обработка состоит в чтении файла, разбивки его на отдельные строки текста и выделения из каждой строки заданного числа подстрок (в том числе нуля). Затем найденная подстрока используется в качестве значения переменной при выполнении основного тела цикла. По умолчанию ключ /F выделяет из каждой строки файла первое слово, очищенное от окружающих его пробелов. Пустые строки в файле пропускаются. Необязательный параметр «options» служит для переопределения заданных по умолчанию правил обработки строк.
Возможные ключевые слова для этого параметра:

Описание
eol=c Задает символ конца строки (только один символ).
skip=n Задает число строк, пропускаемых в начале файла.
delims=xxx Задает набор разделителей. Заменяет набор разделителей по умолчанию, состоящий из пробела и символа табуляции.
Задает элементы, передаваемые из каждой строки в тело цикла for при каждой итерации. В результате размещаются дополнительные имена переменных. Форма m-n задает диапазон, указывающий элементы с m -го по n -ый. Если последним символом строки tokens= является звездочка (*), то размещается дополнительная переменная, в которую помещается остаток строки после разбора последнего элемента.
usebackq Задает возможность использования кавычек для имен файлов в параметре МножествоИменФайлов . Задает исполнение строки, заключенной в обратные кавычки, как команды, а строки в одиночных кавычках — как команды в символьной строке.

Поясняющий пример:
FOR /F «eol=; tokens=2,3* delims=, » %i in (myfile.txt) do @echo %i %j %k
Эта команда обрабатывает файл myfile.txt, пропускает все строки, которые начинаются с символа точки с запятой, и передает вторую и третью подстроки из каждой строки в тело цикла, причем подстроки разделяются запятыми и/или пробелами. В теле цикла переменная %i используется для второй подстроки, %j — для третьей, а %k получает все оставшиеся подстроки после третьей. Имена файлов, содержащие пробелы, необходимо заключать в двойные кавычки. Для того чтобы использовать двойные кавычки, необходимо использовать параметр usebackq, иначе двойные кавычки будут восприняты как границы строки для обработки.

Синтаксис команды FOR /F также позволяет обработать отдельную строку, с указанием параметра filenameset, заключенным в одиночные кавычки. Строка будет обработана как единая строка из входного файла.

Наконец, команда FOR /F позволяет обработать строку вывода другой команды. Для этого следует ввести строку вызова команды в апострофах вместо набора имен файлов в скобках. Строка передается для выполнения обработчику команд CMD.EXE, а вывод этой команды записывается в память и обрабатывается так, как будто строка вывода взята из файла. Например, следующая команда:
FOR /F «usebackq delims==» %i IN (`set`) DO @echo %i
выведет перечень имен всех переменных среды, определенных в настоящее время в системе.

Еще один пример:

Организация блокировок
Установка цвета консоли

(CopyLeft) Vadim Kopichenko

Расшифровка значений

not

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

errorlevel заданное_число


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

команда_для_обработки

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

строка_№1==строка_№2


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

exist название_файла

Данное условие будет выполнено в том случае, когда документ с указанным именем существует.

оператор_сравнения

В качестве указанного параметра предусматривается оператор сравнения. Он состоит из трех символов и необходимо сказать о доступных вариантах: EQU (равенство), NEQ (значения не равны между собой), LSS (менее), GTR (более), LEQ (значение является меньшим или равным), GEQ (значение является большим или равным).

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

cmdextversion заданное_число

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

defined заданная_переменная

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

команда_и_параметры


Команда, а также все доступные для неё параметры в ходе обработки в КС, когда работает else.

Синтаксис

if [not] errorlevel заданное_число команда_для_обработки [else выражение] if [not] строка_№1==строка_№2 команда_для_обработки [else выражение] if [not] exist название_файла команда_для_обработки [else выражение]

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

if [/i] строка_№1 оператор_сравнения строка_№2 команда_для_обработки [else выражение] ifcmdextversion заданное_число команда_для_обработки [else выражение] ifdefined заданная_переменная команда_для_обработки [else команда_и_параметры]

Урок 3 по cmd – работа с переменными |

Объявление собственных переменных является неотъемлемой часть практически любого языка программирования, так в языке vbscript они объявляются с помощью ключевого слова dim, а в jscript – используется ключевое слово var.

Третий урок по командной строке

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

В данном примере, с помощью ключевого слова cmd set мы поэтапно объявили три переменные (Var1, Var2 и Var3), как и в языке vbscript, в cmd регистр символов не играет роли, поэтому, данные строчки выведут фразу “Привет Мир!!!”

или

Стоит учитывать один момент, запись

и

это не одно и тоже, то есть, в первом случае мы создаем cmd переменную “var1”, а во втором – “var1 “. С присвоением значений аналогичная ситуация, так что обращайте внимание на пробел!!!

Видим, что бы вывести значение переменной с помощью функции Echo, мы заключаем ее в символ “%”, для set – просто прописываем ее имя, так же стоит учитывать, что всем переменным присваивается строковой тип.

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

Что бы очистить переменные в командной строке Windows от их содержимого, нужно просто присвоить пустое значение:

Мы просто после имени прописали знак равенства и все. Стоит помнить, что если в таких языках программирования как vbscript и jscript присвоение пустого значения переменной не влияет на ее существование, то в командной строке происходит полное ее удаление, то есть, команда:

просто выведет строчку %Var3%, а команда

Выведет сообщение “переменная среды var3 не определена

Стоит учитывать тот момент, что если мы хотим, что бы переменная командной строки Windows содержала специальные символы (например, @ < > & | ^ ), то их нужно экранировать.  В языке jscript для вывода специальных символов используются esc-последовательности, в командной строке специальный символ экранируется с помощью “^”:

В данном примере мы экранировали символы & и ^, тем самым присвоив фразы:

“100 & 3 = 5”
“100 ^3”

Стоит обратить внимание, что если мы попытаемся вывести значения данных переменных с помощью функции cmd set, то проблем не возникнет, но если будет использовать функцию echo, то получим совсем не тот результат, что ожидали. Так, при попытке выполнить следующую команду:

Получим предупреждение:

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

Это происходит из-за повторного анализа спец-символов при использовании функции echo. Надо просто прописать символ “^” экранирования не один раз, а трижды:

Теперь при выполнении кода:

все пройдет успешно.

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

Область видимости – блок кода, за пределами которого нельзя получить доступ к переменным, объявленным в нем. Довольно ясно значение области видимости проявляется при роботе с функциями, по этому вопросу можете прочить статью “Урок 3 по JScript: Объявление пользовательских функций“.

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

переменные командной строки windows

Что бы задать локальную область видимости, используется блок SETLOCAL … ENDLOCAL. Все cmd переменные командной строки Windows, объявленные в середине данного блока не будут видны за его пределами. Откройте редактор (я использую редактор Notepad , так как он сразу подсвечивает код), и пропишите в нем следующие строчки кода:

Видим, что вначале мы объявили var1 и присвоили ей значение 0, далее мы снова объявили переменную с аналогичным именем, но уже в блоке SETLOCAL … ENDLOCAL. В сценарии происходит вывод значения как локальной, так и глобальной var1. Я специально использовал латинские знаки, что бы у вас в случае чего не выводились крякозябры.

Спасибо за внимание. Автор блога

Понравилась статья? Поделить с друзьями:
  • Час классного руководства разработка
  • Ксинокард таблетки инструкция по применению цена в алматы
  • Лерканидипин инструкция цена отзывы как принимать
  • Структум инструкция по применению таблетки взрослым от чего помогает цена
  • Старлайн а91 инструкция по программированию брелка видео