2 лаба. Разработать и выполнить командные файлы (КФ), выполняющие следующие функции
Скачать 447.3 Kb.
|
Разработать и выполнить командные файлы (КФ), выполняющие следующие функции: Вывод на экран имен всех файлов с указанным расширением, находящихся в каталоге, имя которого задается при запуске командного файла первым параметром. Расширение файлов задается вторым параметром. Необходимо поменять кодировку Кодировка – Кодировки – Кириллица – OEM 866 Рисунок 1 Документ 1.bat Среди введенных с клавиатуры целых чисел (использовать SET /P) найти наибольшее и наименьшее. Признак конца ввода – знак -. С помощью команды ECHO OFF можно отключить дублирование команд, идущих после нее (сама команда ECHO OFF при этом все же дублируется). :BegLoop – начало цикла Например, для ввода значения переменной M c помощью клавиатуры следует использовать команду SET /P M=[введите M] Для получения значения определенной переменной среды нужно заключить имя этой переменной в символы %. IF NOT DEFINED если переменная не существует GOTO ExitLoop – вернуться в конец цикла
В пакетном файле можно выводить на экран строки с сообщениями. Делается это с помощью команды ECHO сообщение В заданном каталоге и его подкаталогах найти общее количество подкаталогов. На экран вывести только требуемый результат. При включенной расширенной обработке команд (этот режим в Windows XP используется по умолчанию) имеется возможность рассматривать значения переменных среды как числа и производить с ними арифметические вычисления (используются ТОЛЬКО целые числа). Для этого используется команда SET с ключом /A. С помощью ключа /R можно задать рекурсию в команде FOR: FOR /R [[диск:]путь] %переменная IN (набор) DO команда [параметры] В этом случае заданная команда выполняется для каталога [диск:]путь, а также для всех подкаталогов этого пути. Если вместо набора указана только точка (.), то команда проверяет все подкаталоги текущего каталога. В каталогах, имена которых заданы первым и вторым параметрами командного файла, найти и вывести на экран имена файлов (расширения могут быть любые), присутствующие как в первом, так и во втором каталоге. Следует использовать только один оператор FOR. Параметр %%переменная представляет подставляемую переменную (счетчик цикла), причем здесь могут использоваться только имена переменных, состоящие из одной буквы. При выполнении команда FOR заменяет подставляемую переменную текстом каждой строки в заданном множестве, пока команда, стоящая после ключевого слова DO, не обработает все такие строки. Второй способ использования команды IF — это проверка существования заданного файла. Синтаксис для этого случая имеет вид: IF [NOT] EXIST файл команда1 [ELSE команда2] Условие считается истинным, если указанный файл существует.
Вычисление и вывод на экран значения факториала целого числа, задаваемого при запуске КФ. Предусмотреть проверку заданного значения и при задании отрицательного значения или значения, превышающего максимально возможную величину, выводить соответствующие сообщения. Для проверки правильности вычислений использовать калькулятор. EXIT /B - Предписывает завершить текущий пакетный файл-сценарий вместо завершения CMD.EXE. Если выполняется вне пакетного файла-сценария, то будет завершена программа CMD.EXE 6. Удаление из каталога, заданного первым параметром, файлов, которые присутствуют и в каталоге, указанным вторым параметром. Предусмотреть запрос пользователю на подтверждение удаления. Самые широкие возможности имеет команда FOR с ключом /F: FOR /F ["ключи"] %переменная IN (набор) DO команда [параметры] Здесь параметр набор содержит имена одного или нескольких файлов, которые по очереди открываются, читаются и обрабатываются. Обработка состоит в чтении файла, разбиении его на отдельные строки текста и выделении из каждой строки заданного числа подстрок. Затем найденная подстрока используется в качестве значения переменной при выполнении основного тела цикла (заданной команды).
DIR Вывод списка файлов и подкаталогов в указанном каталоге. /A Отображение файлов с указанными атрибутами. D Каталоги.(не выводит имена каталогов) /B Вывод только имен файлов. Команда del удаляет заданные файлы через командную строку. /p -Задание удаления с подтверждением для каждого файла. /f - Задание удаления файлов с атрибутом «Только чтение». /a - Удаление файлов с заданными атрибутами. 7. В каталоге, указанном первым параметром КФ, и его подкаталогах, найти файлы, созданные во второй половине рабочего дня (после 14 часов) и скопировать их в отдельный подкаталог. Команда SETLOCAL определяет начало области локальных установок переменных среды. Другими словами, изменения среды, внесенные после выполнения SETLOCAL, будут являться локальными относительно текущего пакетного файла. Если для получения значения переменной вместо знаков процента (%) использовать восклицательный знак (!) и предварительно включить режим связывания времени выполнения командой SETLOCAL ENABLEDELAYEDEXPANSION. Самые широкие возможности имеет команда FOR с ключом /F: FOR /F ["ключи"] %переменная IN (набор) DO команда [параметры] Здесь параметр набор содержит имена одного или нескольких файлов, которые по очереди открываются, читаются и обрабатываются. Обработка состоит в чтении файла, разбиении его на отдельные строки текста и выделении из каждой строки заданного числа подстрок. Затем найденная подстрока используется в качестве значения переменной при выполнении основного тела цикла (заданной команды). DIR Вывод списка файлов и подкаталогов в указанном каталоге. /A Отображение файлов с указанными атрибутами. D Каталоги.(не выводит имена каталогов) /B Вывод только имен файлов. /S Отображение файлов из указанного каталога и всех его подкаталогов. Наконец, с помощью конструкции команда1 | команда2 можно использовать сообщения, выводимые первой командой, в качестве входных данных для второй команды (конвейер команд). FINDSTR Назначение команды - поиск строк в текстовых файлах. /I Определяет, что поиск будет вестись без учета регистра. Для того, чтобы вызвать внешний командный файл с последующим возвратом в первоначальный файл, нужно использовать специальную команду CALL файл
@Echo Off setlocal enabledelayedexpansion set "WORKPATH=D:\vera\f" set etime=1400 rem выставляем пороговое время на 14:00 и убираем разделитель ":" rem ищем все файлы с расширением ".jpg", в папке E:\VIDEO\ и всех его подкаталогах. for /f %%I in ('dir /b/s/a-d "%WORKPATH%" ^| findstr /i ".jpg"') do (call :1 "%%I") endlocal exit b/ :1 rem форматируем дату/время создания файла и извлекаем переменную времени set tr=%t1 set tr=%tr:.=% set tv=%tr:9,5% set tv=%tv::=% rem сравниваем время создания файла (больше, либо равно) с нашим пороговым значением, и копируем такие файлы в D:\video\ if %tv% GTR %etime% copy %1 D:\WinGrafica\%nx1 |