Командные файлы операционной системы MS Windows. Лясин Д.Н - 25 стр.

UptoLike

Составители: 

25
15.08.2012 16:38 161 099 arc.rar
17.08.2012 12:32 298 700 docfiles.lst
17.08.2012 17:52 0 list.txt
11.10.2005 03:51 302 080 Rar.exe
16.08.2012 14:12 2 862 report.txt
29.05.2006 12:44 22 089 words15.08.2012.txt
11 файлов 812 090 байт
0 папок 276 914 065 408 байт свободно
С помощью команды for осуществляется разбор каждой строки вывода
команды и в первом столбце выделяется год создания файла. После этого на экран
выводится информация только о тех файлах, которые были созданы после 2011
года. Для ключа TOKENS в последнем примере будут идентичными следующие
определения:
TOKENS=1,2,3,4; TOKENS=1,2,3-4; TOKENS=1-4.
В последнем примере обращает на себя внимание не встречавшееся ранее
обращение к переменным вида !имя_переменной! Такое обращение характерно
для работы с переменными в команде цикла или внутри блока команд цикла. Оно
связано с внутренними особенностями работы командного интерпретатора с пе-
ременными в этих областях кода. Обычное обращение %имя_переменной% при-
водит к ошибкам и чтобы избежать проблем с инициализацией и работой с пере-
менными в таком контексте необходимо использовать в командном файле дирек-
тиву
SETLOCAL ENABLEDELAYEDEXPANSION,
и сами переменные в командах
цикла (и условных командах) обрамлять символами ‘!’.
В команде for /f можно также обработать отдельную строку. Для этого
следует ввести нужную строку в кавычках вместо набора имен файлов в скобках.
Обработка будет выполнена аналогично каждой отдельной строке файла в преды-
дущих примерах. Например, файл следующего содержания:
@ECHO OFF
for /f " TOKENS=2,3* DELIMS=, " %%i in ("Один, Два Три,
Четыре, Пять, Шесть, Семь”) do @ECHO %%i:%%j:%%k
выведет:
Два Три: Четыре: Пять, Шесть, Семь
Команда for разбирает строку по заданному разделителю (,) и выводит
значение второй (%%i), третьей(%%j) строк и хвоста строки (%%k) .
Еще одной возможностью оператора for, уже встречавшейся при изучении
параметров командных файлов, является расширение переменных цикла до пол-
ного пути, расширения, имени файла, его размера и т.п. В таблице 10 еще раз опи-
саны эти расширения для параметра %%i.
Таблица 10. Операторы для переменных команды for
Операторы
Описание
%%~Fi Переменная %i расширяется до полного имени файла
%%~Di Из переменной %i выделяется только имя диска
%%~Pi Из переменной %i выделяется только путь к файлу
%%~Ni Из переменной %i выделяется только имя файла
%%~Xi Из переменной %i выделяется расширение имени файла
%%~Si Значение операторов N и X для переменной %i изменяется
так, что они работают с кратким именем файла
%%~Ti Дата и время создания файла
%%~Zi Размер файла
      15.08.2012 16:38      161 099        arc.rar
      17.08.2012 12:32      298 700        docfiles.lst
      17.08.2012 17:52      0              list.txt
      11.10.2005 03:51      302 080        Rar.exe
      16.08.2012 14:12      2 862          report.txt
      29.05.2006 12:44      22 089         words15.08.2012.txt
              11 файлов    812 090 байт
              0 папок 276 914 065 408 байт свободно

       С помощью команды for осуществляется разбор каждой строки вывода
команды и в первом столбце выделяется год создания файла. После этого на экран
выводится информация только о тех файлах, которые были созданы после 2011
года. Для ключа TOKENS в последнем примере будут идентичными следующие
определения: TOKENS=1,2,3,4; TOKENS=1,2,3-4; TOKENS=1-4.
       В последнем примере обращает на себя внимание не встречавшееся ранее
обращение к переменным вида !имя_переменной! Такое обращение характерно
для работы с переменными в команде цикла или внутри блока команд цикла. Оно
связано с внутренними особенностями работы командного интерпретатора с пе-
ременными в этих областях кода. Обычное обращение %имя_переменной% при-
водит к ошибкам и чтобы избежать проблем с инициализацией и работой с пере-
менными в таком контексте необходимо использовать в командном файле дирек-
тиву SETLOCAL ENABLEDELAYEDEXPANSION, и сами переменные в командах
цикла (и условных командах) обрамлять символами ‘!’.
       В команде for /f можно также обработать отдельную строку. Для этого
следует ввести нужную строку в кавычках вместо набора имен файлов в скобках.
Обработка будет выполнена аналогично каждой отдельной строке файла в преды-
дущих примерах. Например, файл следующего содержания:
      @ECHO OFF
      for /f " TOKENS=2,3* DELIMS=, " %%i in                          ("Один,   Два   Три,
Четыре, Пять, Шесть, Семь”) do @ECHO %%i:%%j:%%k
выведет:
      Два Три: Четыре: Пять, Шесть, Семь
       Команда for разбирает строку по заданному разделителю (,) и выводит
значение второй (%%i), третьей(%%j) строк и хвоста строки (%%k) .
       Еще одной возможностью оператора for, уже встречавшейся при изучении
параметров командных файлов, является расширение переменных цикла до пол-
ного пути, расширения, имени файла, его размера и т.п. В таблице 10 еще раз опи-
саны эти расширения для параметра %%i.
                                       Таблица 10. Операторы для переменных команды for
Операторы                        Описание
%%~Fi                            Переменная %i расширяется до полного имени файла
%%~Di                            Из переменной %i выделяется только имя диска
%%~Pi                            Из переменной %i выделяется только путь к файлу
%%~Ni                            Из переменной %i выделяется только имя файла
%%~Xi                            Из переменной %i выделяется расширение имени файла
%%~Si                            Значение операторов N и X для переменной %i изменяется
                                 так, что они работают с кратким именем файла
%%~Ti                            Дата и время создания файла
%%~Zi                            Размер файла
                                                                 25