Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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




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

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

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

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

Класический цикл с параметром (заданными началом, концом и шагом приращения). Например:

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

4) FOR /F [“ключи”] %переменная IN (набор) DO команда [параметры]

Чтение и обработка строк из набора текстовых файлов. Ключи позволяют выделять слова и подстроки (токены) по разделителям (DELIMS) или начальным символам.

5) FOR /F [“ключи”] %переменная IN (‘строка’) DO команда [параметры]

Позволяет обработать строку вывода определенной команды (вместо набора файлов в предыдущем варианте – строка вызоыв команды в апострофах). Например, для вывода имен всех переменных среды:

FOR /F “DELIMS==” %%i IN (‘SET’) DO ECHO %%i

Кроме того, для переменных команды FOR разрешены также синтаксические операции (выделение имени, пути, диска - аналогично рассм. выше переменным окружения).

Команда PUSHD сохраняет имя текущего каталога для команды POPD и осуще­ствляет переход в другой каталог. Ее синтаксис имеет вид:

PUSHD [путь |..]

Вновь сделать текущим каталог, сохраненный командой pushd, можно с помощью команды popd.

 

 


Упражнения

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





Поделиться с друзьями:


Дата добавления: 2015-11-23; Мы поможем в написании ваших работ!; просмотров: 1047 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Не будет большим злом, если студент впадет в заблуждение; если же ошибаются великие умы, мир дорого оплачивает их ошибки. © Никола Тесла
==> читать все изречения...

2602 - | 2280 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.