Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
1. Пусть имеется текстовый файл protokol.txt, в котором хранится журнал обработанных файлов в следующем формате:
<имя файла> <дата> <время>
Слово дата здесь начинается в каждой строке с двадцатой позиции.
Необходимо написать командный файл, с помощью которого сделать выборку из этого файла (т. е. создать новый текстовый файл с нужной информацией) за заданный месяц (мм) и год (гггг) в файл ммгггг-.txt, сформированный файл упорядочить по дате обработки. Нужные месяц и год указать как параметры командной строки.
Решение:
Практически все нужные действия выполняются с помощью конвейеризации команд find и sort:
@ЕСНО OFF
RЕМ Проверка наличия параметров командной строки
IF -%1==- GOTO NoParam
IF -%2==- GOTO NoParam
REM Выделение нужных строк из файла protokol.txt
FIND "%1.%2" protokol.txt | SORT /+26 > %l%2.txt
GOTO End
:NoParam
ECHO He заданы необходимые параметры командной строки!
PAUSE
:End
2. Написать командный файл, который будет копировать из текущего каталога все файлы с расширением txt, кроме одного файла, указанного в качестве второго параметра командной строки, в каталог, указанный первым параметром. Если имя каталога, в который должно производиться копирование, не задано, то вывести сообщение об этом и прервать выполнение файла.
Решение:
Для выполнения поставленной задачи можно перебрать в цикле все файлы с расширением txt, проверяя перед копированием имя каждого из этих файлов:
@ЕСНО OFF
REM Проверка наличия параметра командной строки
IF -%!==- GOTO NoDir
RЕМ Копирование нужных файлов
FOR %%f IN (*.txt) DO IF NOT -%%f==-%2 COPY %%f %1
GOTO End
:NoDir
ECHO He указан каталог для копирования!
PAUSE
:End
3. Задание аналогично второму упражнению. Дополнительные требования:
а) переписывать только те файлы, которые новее одноименных в каталоге - приемнике,
б) не прерывать копирование в случае возникновения ошибки,
в) записывать в файл logcopy.txt имя каждого копируемого файла и результат выполнения операции для него.
Другими словами, файл logcopy.txt должен быть примерно таким:
Успешно: а.txt
Ошибка: b.txt
Успешно: с.txt
Решение:
В этом упражнении нужно создать два пакетных файла. В основном файле работает такой же цикл for, как и в предыдущем упражнении, однако вместо непосредственного выполнения команды copy здесь вызываетсякомандный файл 3_1. bat:
@ЕСНО OFF
REM Проверка наличия параметра командной строки
IF -%1==- GOTO NoDir
REM Вызов в цикле файла 3_l.bat для копирования нужного файла
FOR %%f IN (*.txt) DO IF NOT -%%f=-%2 CALL 3_l.bat %%f %1
GOTO End
:NoDir
ECHO He указан каталог для копирования!
PAUSE
:End
Вызываемый в цикле файл 3_1.bat имеет следующее содержимое:
@ЕСНО OFF
REM Копирование файла
XCOPY %1 %2 /D /С > NUL
REM Проверка успешности копирования
IF ERRORLEVEL 0 GOTO Success
REM Запись в файл отчета информации об ошибке при копировании
ECHO Ошибка: % 1 >> logcopy.log
GOTO End
:Success
REM Запись в файл отчета информации об успешном копировании
ECHO Успешно: %1 >> logcopy.log
:End
4. Создать командный файл, который выводил бы содержимое каталога, указанного в качестве параметра командной строки, причем пользователю должна быть предоставлена возможность выбора с помощью меню устройства для вывода: на экран (информация выводится по одному
экрану), в текстовый файл c:\catalog.txt или на принтер.
Решение:
Следующий простой пакетный файл не требует дополнительных пояснений:
@ЕСНО OFF
CLS
IF -%1==- GOTO NoDir
RЕМ Вывод меню на экран
ECHO A - На экран
ECHO Б - В файл C:\catalog.txt
ECHO В - На принтер
КЕМ Вывод подсказки для ввода
CHOICE /С:AБВ Куда выводить содержимое %1
CLS
КЕМ Определение сделанного выбора
IF ERRORLEVEL 3 GOTO DirToPrn
IF ERRORLEVEL 2 GOTO DirToFile
IF ERRORLEVEL 1 GOTO DirToCon
ECHO Выбор не был сделан.
GOTO End
:DirToCon
DIR %1 | MORE
GOTO End
:DirToFile
DIR %1 > C:\catalog.txt
GOTO End
:DirToPrn
DIR %1 > prn
GOTO End
:NoDir
ECHO He указан каталог для сканирования!
PAUSE
:End
Дата публикования: 2015-09-18; Прочитано: 1630 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!