Создать пакетный файл проверяющий наличие некоторого файла и выводящий сообщение о его наличии

Обновлено: 02.07.2024

Второй способ использования команды IF — это проверка существования заданного файла. Синтаксис для этого случая имеет вид:

IF [NOT] EXIST файл команда1 [ELSE команда2]

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

IF -%1==- GOTO NoFileSpecified

IF NOT EXIST %1 GOTO FileNotExist

ECHO Файл '%1' успешно найден.

REM Файл запущен без параметров

ECHO В командной строке не указано имя файла.

REM Параметр командной строки задан, но файл не найден

ECHO Файл '%1' не найден.

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

Аналогично файлам команда IF позволяет проверить наличие в системе определенной переменной среды:

IF DEFINED переменная команда1 [ELSE команда2]

Здесь условие DEFINED применяется подобно условию EXISTS наличия заданного файла, но принимает в качестве аргумента имя переменной среды и возвращает истинное значение, если эта переменная определена. Например:

IF DEFINED MyVar GOTO :VarExists

ECHO Переменная MyVar не определена

ECHO Переменная MyVar определена,

ECHO ее значение равно %MyVar%

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

Еще один способ использования команды IF — это проверка кода завершения (кода выхода) предыдущей команды. Синтаксис для IF в этом случае имеет следующий вид:

IF [NOT] ERRORLEVEL число команда1 [ELSE команда2]

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

XCOPY my.txt C:\ > NUL

REM Проверка кода завершения копирования

IF ERRORLEVEL 1 GOTO ErrOccurred

ECHO Копирование выполнено без ошибок.

ECHO При выполнении команды XCOPY возникла ошибка!

В операторе IF ERRORLEVEL … можно также применять операторы сравнения чисел, приведенные в табл. 3.2. Например:

IF ERRORLEVEL LEQ 1 GOTO Case1

Иногда более удобным для работы с кодами завершения программ может оказаться использование переменной %ERRORLEVEL%. (строковое представление текущего значения кода ошибки ERRORLEVEL).

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

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

IF CMDEXTVERSION число команда1 [ELSE команда2]

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

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

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

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

8.1 Цикл FOR … IN … DO …

Самый простой вариант синтаксиса команды FOR для командных файлов имеет следующий вид:

FOR %%переменная IN (множество)

DO команда [параметры]

Перед названием переменной должны стоять именно два знака процента (%%), а не один, как это было при использовании команды FOR непосредственно из командной строки.

Сразу приведем пример. Если в командном файле заданы строки

FOR %%i IN (Раз,Два,Три) DO ECHO %%i

то в результате его выполнения на экране будет напечатано следующее:

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

FOR %%i IN ("Раз,Два",Три) DO ECHO %%i

на экран будет выведено

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

Чтобы избежать путаницы с параметрами командного файла %0 — %9, для переменных следует использовать любые символы кроме 0 – 9.

Параметр множество в команде FOR может также представлять одну или несколько групп файлов. Например, чтобы вывести в файл список всех файлов с расширениями txt и prn, находящихся в каталоге C:\TEXT, без использования команды DIR, можно использовать командный файл следующего содержания:

FOR %%f IN (C:\TEXT\*.txt C:\TEXT\*.prn) DO ECHO %%f >> list.txt

При таком использовании команды FOR процесс обработки продолжается, пока не обработаются все файлы (или группы файлов), указанные во множестве.

8.2 Цикл FOR /D … IN … DO …

Следующий вариант команды FOR реализуется с помощью ключа /D:

FOR /D %переменная IN (набор) DO команда [параметры]

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

FOR /D %%f IN (C:\*.*) DO ECHO %%f

мы получим список всех каталогов на диске C:, например:

8.3 Цикл FOR /R … IN … DO …

С помощью ключа /R можно задать рекурсию в команде: FOR:

FOR /R [[диск:]путь] %переменная IN (набор)

DO команда [параметры]

В этом случае заданная команда выполняется для каталога [диск:]путь, а также для всех подкаталогов этого пути. Если после ключа R не указано имя каталога, то выполнение команды начинается с текущего каталога. Например, для распечатки всех файлов с расширением txt в текущем каталоге и всех его подкаталогах можно использовать следующий пакетный файл:

FOR /R %%f IN (*.txt) DO PRINT %%f

Если вместо набора указана только точка (.), то команда проверяет все подкаталоги текущего каталога. Например, если мы находимся в каталоге C:\TEXT с двумя подкаталогами BOOKS и ARTICLES, то в результате выполнения файла:

FOR /R %%f IN (.) DO ECHO %%f

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

Цикл FOR /L … IN … DO …

Ключ /L позволяет реализовать с помощью команды FOR арифметический цикл, в этом случае синтаксис имеет следующий: вид:

FOR /L %переменная IN (начало,шаг,конец) DO команда [параметры]

Здесь заданная после ключевого слова IN тройка (начало,шаг,конец) раскрывается в последовательность чисел с заданными началом, концом и шагом приращения. Так, набор (1,1,5) раскрывается в (1 2 3 4 5), а набор (5,-1,1) заменяется на (5 4 3 2 1). Например, в результате выполнения следующего командного файла:

FOR /L %%f IN (1,1,5) DO ECHO %%f

переменная цикла %%f пробежит значения от 1 до 5, и на экране напечатаются пять чисел:

Числа, получаемые в результате выполнения цикла FOR /L, можно использовать в арифметических вычислениях. Рассмотрим командный файл my.bat следующего содержания:

FOR /L %%f IN (1,1,5) DO CALL :2 %%f

В третьей строке в цикле происходит вызов нового контекста файла my.bat с текущим значением переменной цикла %%f в качестве параметра командной строки, причем управление передается на метку :2 (см. описание CALL в разделе "Изменения в командах перехода"). В шестой строке переменная цикла умножается на десять, и результат записывается в переменную M. Таким образом, в результате выполнения этого файла выведется следующая информация:

8.4 Цикл FOR /F … IN … DO …

Самые мощные возможности (и одновременно самый запутанный синтаксис) имеет команда: FOR с ключом /F:

FOR /F ["ключи"] %переменная IN (набор)

DO команда [параметры]

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

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

Таблица 3.3. Ключи в команде FOR /F

При использовании ключа TOKENS=X,Y,M-N создаются дополнительные переменные. Формат M-N представляет собой диапазон подстрок с номерами от M до N. Если последний символ в строке TOKENS= является звездочкой, то создается дополнительная переменная, значением которой будет весь текст, оставшийся в строке после обработки последней подстроки.

Разберем применение этой команды на примере пакетного файла parser.bat, который производит разбор файла myfile.txt:

IF NOT EXIST myfile.txt GOTO :NoFile

FOR /F "EOL=; TOKENS=2,3* DELIMS=, " %%i IN

(myfile.txt) DO @ECHO %%i %%j %%k

ECHO Не найден файл myfile.txt!

Пропускаются все строки, которые начинаются с символа точки с запятой (EOL=;).

Вторая и третья подстроки из каждой строки передаются в тело цикла, причем подстроки разделяются пробелами (по умолчанию) и/или запятыми (DELIMS=,).

В теле цикла переменная %%i используется для второй подстроки, %%j — для третьей, а %%k получает все оставшиеся подстроки после третьей.

В нашем примере переменная %%i явно описана в инструкции FOR, а переменные %%j и %%k описываются неявно с помощью ключа TOKENS=. Например, если в файле myfile.txt были записаны следующие три строки:

ААА ББББ ВВВВ,ГГГГГ ДДДД

;КККК ЛЛЛЛЛ МММММ

то в результате выполнения пакетного файла parser.bat на экран выведется следующее:

ББББ ВВВВ ГГГГГ ДДДД

Ключ TOKENS= позволяет извлечь из одной строки файла до 26 подстрок, поэтому запрещено использовать имена переменных, начинающиеся не с букв английского алфавита (a–z). Следует помнить, что имена переменных FOR являются глобальными, поэтому одновременно не может быть активно более 26 переменных.

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

FOR /F "EOL=; TOKENS=2,3* DELIMS=, " %%i IN

("ААА ББББ ВВВВ,ГГГГГ ДДДД") DO @ECHO %%i %%j %%k

при своем выполнении напечатает

ББББ ВВВВ ГГГГГ ДДДД

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

SET M=ААА ББББ ВВВВ,ГГГГГ ДДДД

FOR /F "EOL=; TOKENS=2,3* DELIMS=,

" %%i IN ("%M%") DO @ECHO %%i %%j %%k

Наконец, команда FOR /F позволяет обработать строку вывода другой команды. Для этого следует вместо набора имен файлов в скобках ввести строку вызова команды в апострофах (не в кавычках!). Строка передается для выполнения интерпретатору команд cmd.exe, а вывод этой команды записывается в память и обрабатывается так, как будто строка вывода взята из файла. Например, следующий командный файл:

ECHO Имена переменных среды:

Таблица 3.4. Операторы для переменных команды FOR

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

Например, если мы находимся в каталоге C:\Program Files\Far и запустим командный файл следующего содержания:

FOR %%i IN (*.txt) DO ECHO %%~Fi

то на экран выведутся полные имена всех файлов

с расширением txt:

Задания на выполнение:

  1. Разработать пакетный файл для удаления всех временных файлов (*.tmp) на диске . Имя диска вводится в командной строке при запуске командного файла.
  2. Разработать пакетный файл для создания файла, в который будет занесена текущая дата. Имя файла должно совпадать с текущей датой. Расположение файла задается в командной строке при запуске командного файла.
  3. Разработать пакетный файл для вывода информации в файл о всех имеющихся исполняемых файлах в заданном директории. Имя директории и имя файла результата вводится в командной строке при запуске командного файла.
  4. Разработать пакетный файл для вывода на экран содержание всех txt-файлов заданной директории. Имя директории вводится в командной строке при запуске командного файла.
  5. Разработать пакетный файл для создания файла, в который будет занесено текущее время. Имя файла должно совпадать с текущим временем. Расположение файла задается в командной строке при запуске командного файла.
  6. Разработать пакетный файл для вывода в файл списка всех директорий заданного каталога. Имя директории и имя файла результата вводится в командной строке при запуске командного файла.
  7. Разработать пакетный файл для вывода в файл списка всех файлов, начинающихся с символа a. Имя директории и имя файла результата вводится в командной строке при запуске командного файла.
  8. Разработать пакетный файл для запуска другого пакетного файла, который, в свою очередь, будет выводить информацию о файлах корневого каталога диска C:\ . Имя другого пакетного файла вводится в командной строке при запуске командного файла.

9. Разработать пакетный файл для поиска текстовой строки в заданном файле. Имя текстового файла вводится в командной строке при запуске командного файла.При наборе текста строки в текстовом файле заканчиваются командами перевод строки, возврат каретки (что соответствует нажатию клавиши Enter)

-рекомендуется в командной строке переключаться на кодировку 1251 для поддержки русских букв (см. Лабораторную №2).

- Файл должен содержать поясняющие комментарии (REM)

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

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

Нет нужной работы в каталоге?


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

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

computer

Требуются доработки?
Они включены в стоимость работы


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

  • Для учеников 1-11 классов и дошкольников
  • Бесплатные сертификаты учителям и участникам

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

3. Создать пакетный файл выводящий на экран последовательность чисел от 100 до 0 с шагом 2.

4. Создать пакетный файл выводящий на экран все папки и подпапки текущего каталога.

5. Вывести список файлов и подпапок диска D.

6. Если существует файл 1.txt, то скопировать все файлы с расширением .doc в папку DOCUMENTS, если такого нет, то переместить все файлы с расширением .doc в папку DOCUMENTS.

7. Создать папки ONE и TWO двумя различными способами.

Код созданных пакетных файлов

Контрольный тест


Рисунок 5 - Пример работы программы


Рисунок 6 - Пример работы программы

  • подготовка к ЕГЭ/ОГЭ и ВПР
  • по всем предметам 1-11 классов


Курс повышения квалификации

Охрана труда


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

Охрана труда


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

Библиотечно-библиографические и информационные знания в педагогическом процессе

  • ЗП до 91 000 руб.
  • Гибкий график
  • Удаленная работа

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

Свидетельство и скидка на обучение каждому участнику

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

5 606 251 материал в базе

Самые массовые международные дистанционные

Школьные Инфоконкурсы 2022

Свидетельство и скидка на обучение каждому участнику

Другие материалы

Вам будут интересны эти курсы:

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

  • 17.02.2022 14
  • DOCX 22.5 кбайт
  • 0 скачиваний
  • Оцените материал:

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

Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

Автор материала

40%

  • Подготовка к ЕГЭ/ОГЭ и ВПР
  • Для учеников 1-11 классов

Московский институт профессиональной
переподготовки и повышения
квалификации педагогов

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

663 курса от 690 рублей

Выбрать курс со скидкой

Выдаём документы
установленного образца!

Учителя о ЕГЭ: секреты успешной подготовки

Время чтения: 11 минут

Академическая стипендия для вузов в 2023 году вырастет до 1 825 рублей

Время чтения: 1 минута

В приграничных пунктах Брянской области на день приостановили занятия в школах

Время чтения: 0 минут

В Россию приехали 10 тысяч детей из Луганской и Донецкой Народных республик

Время чтения: 2 минуты

В Белгородской области отменяют занятия в школах и детсадах на границе с Украиной

Время чтения: 0 минут

Минтруд предложил упростить направление маткапитала на образование

Время чтения: 1 минута

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

Время чтения: 1 минута

Подарочные сертификаты

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

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

Пакетно командный файл может содержать:

  1. Внутренние команды (команды работы с файлами и каталогами и системного назначения).
  2. Внешние команды.
  3. Специальные команды, выполняемые только когда прописаны в самом пакетном файле.
  4. Команды ветвления (if).
  5. Метки перехода (goto).
  6. Обращения к исполняемым файлам и вызов других пакетных файлов.

Каждой внешней команде должен соответствовать физический файл на диске…

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

  • С помощью команды copycon имя_файла.bat.
  • Используя команды редиректа (>, >>).
  • С помощью редакторов (блокнот).
  • Используя команду edit имя_файла.bat.

Вызов пакетного файла:

  1. Двойным кликом мыши.
  2. С помощью командной строки, находясь в каталоге где расположеный файл, набрав имя_файла.bat.

Теперь разберем создание BAT файлов на примере. Создадим командный файл, который выполняет отчистку экрана, сообщает текущую версию операционной системы, переходит на диск С и выводит содержимое текущего каталога с паузами при заполнении экрана. Открываем блокнот и начинаем писать наш файл. Команда отчистки экрана это естественно CLS, далее выводим версию ОС с помощью комманды VER, переходим на диск С:, и выводим его содержимое с паузами использовав команду dir и ключ /p.

В общем код получиться вот такой:

Команды if, for, goto.

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

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

В общем код получиться вот такой:

На этом данную статью я заканчиваю, надеюсь, вы полностью разобрались с темами: Пакетные командные файлы, создание BAT файлов, Команды if, for, goto.

Читайте также: