Информационные системы ускорителей

1.2. Структура файловой системы Windows


Таблица 1.1. Базовые операции с каталогами и файлами
в командной строке

ОперацияФормат команды
Создание каталога MKDIR [диск:]путь
MD [диск:]путь
Удаление каталога RMDIR [диск:]путь
RD [диск:]путь
Просмотр каталога DIR [диск:]путь
Просмотр дерева каталога TREE [диск:]путь
Переименование каталога MOVE [диск:][путь]путь1 новый_путь
Копирование каталога XCOPY [диск:]путь1 путь2
Создание файла COPY CON [диск:][путь]имя_файла
Удаление файла DEL [диск:][путь]имя_файла
ERASE [диск:][путь]имя_файла
Просмотр файла TYPE [диск:][путь]имя_файла
MORE [диск:][путь]имя_файла
COPY [диск:][путь]имя_файла CON
Переименование файла RENAME [диск:][путь]имя_файла1 имя_файла2
REN [диск:][путь]имя_файла1 имя_файла2
Перемещение файлов MOVE [диск:][путь]имя_файла1[,...] назначение
Копирование файла COPY [диск:][путь]имя_файла1 имя_файла2.
Переименование файла RENAME [диск:][путь]имя_файла1 имя_файла2
REN [диск:][путь]имя_файла1 имя_файла2

Перечень наиболее распространенных операций с элементами файловой системы Windows – каталогами и файлами приведен в Таблице 1.1 (квадратные скобки указывают на необязательность элемента), а полный перечень команд Cmd.exe можно получить командой HELP (Пример 1.3).


Пример 1.3. Вывод перечня команд в командной строке

d:\WINLAB>help
Для получения сведений об определенной команде
наберите HELP <имя команды>
ASSOC          Вывод либо изменение сопоставлений по расширениям
ATTRIB         Отображение и изменение атрибутов файлов.
…….…………………..
d:\WINLAB>
		

Можно также получить подробную справку по отдельно взятой команде, снабдив ее ключом /? – например справку по команде MKDIR (Пример 1.4).


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

	
d:\WINLAB>mkdir /?
Создание каталога.
MKDIR [диск:]путь
MD [диск:]путь
………………………….
d:\WINLAB>
		


Файловая система Windows представляет собой древовидную структуру (как в UNIX и большинстве других операционных систем). Соответственно, для такой файловой системы актуальны такие понятия, как абсолютный путь и относительный путь к каталогу или файлу (Рис. 1.4).


windows-workdir

Рис. 1.4. Абсолютный и относительный путь в файловой системе Windows.


Windows хранит данные на логических дисках: «C», «D», «E», «F» и т.д., физически расположенных на жестком диске («винчестере») либо ассоциированных с внешними устройствами, такими как оптические CD и DVD приводы, USB Flash drive и др.

Абсолютный путь файловой системы Windows начинается с имени диска и двоеточия после него, а затем записывается последовательность имен вложенных каталогов. Для разделения элементов пути используется символ «\» (обратный слеш). В UNIX, если вспомнить предыдущую лабораторную работу, для этой же цели, используется «/» (прямой слеш).


windows-workdir

Рис. 1.5. Дерево, используемое в примерах лабораторного практикума.



Таблица 1.2. Содержание файлов структуры (Рис. 1.5)

Структура A
ФайлСодержание
papa1.txt Папа у Васи силен в математике,
papa2.txt Учится папа за Васю весь год,
papa3.txt Где это видано, где это слыхано,
papa4.txt Папа решает, а Вася сдает?
Структура B
ФайлСодержание
vasya1.txt На это каждый ответит, каждый ответит:
vasya2.txt – Конечно, Вася, Вася, Вася,
vasya3.txt Ну, кто его не знает? Yeah, yeah!
vasya4.txt Вася, Вася, Вася – стиляга из Москвы.

Относительный путь строится относительно текущего каталога и также состоит из последовательности вложенных каталогов, разделенных обратным слешем. При записи относительного пути текущий каталог обозначается как «.» (точка): или совсем не указывается, а каталог вышестоящего уровня – двумя последовательными точками: «..», которые, как и все остальные элементы пути, разделяются обратными слешами.

В качестве упражнения по созданию структуры каталогов и файлов в файловой системе MS Windows с использованием команд интерпретатора Cmd.exe (Таблица 1.1), предлагается построить дерево каталогов и файлов (Рис. 1.5, Таблица 1.2), а затем по аналогии выполнить задания лабораторного практикума (номер своего личного варианта задания необходимо получить у преподавателя). Для всех приведенных далее примеров использования команд интерпретатора Cmd.exe рабочим каталогом считается D:\WINLAB.

Для создания дерева каталогов (Рис. 1.5) возможно использование двух команд: MD или MKDIR (make directory), в формате:

MKDIR [диск:]путь

MD [диск:]путь


При включении расширенной обработки, команда MKDIR создает все промежуточные каталоги в пути (Пример 1.5), тогда как при использовании команды MD пришлось бы создавать вложенные каталоги поочередно (Пример 1.7).


Пример 1.5. Создание цепочки вложенных каталогов одной командой


d:\WINLAB>mkdir  papa\math\strong
d:\WINLAB>tree .
D:\WINLAB
└───papa
    └───math
        └───strong
d:\WINLAB>
		

Для просмотра существующей файловой структуры можно использовать команду TREE (Пример 1.5) (tree – англ. – дерево), отображающую структуру каталогов в графическом виде. Если же нужно увидеть дерево каталогов вместе с содержащимися в них файлами, то необходимо использовать команду TREE с ключом /F (Пример 1.6) – предположим, что дерево (Рис. 1.5) построено. Напомним, что точкой, в качестве параметра команды TREE обозначается текущий каталог (Пример 1.5).


Пример 1.6. Просмотр дерева каталогов и файлов командой TREE

d:\WINLAB>tree papa /f
D:\WINLAB\PAPA
├───incredible
│          papa3.txt
│          papa4.txt
│
└───math
    ├───strong
    │      papa1.txt
    │
    └───study
          papa2.txt
d:\WINLAB>
		


В общем случае команда графического представления структуры папок или пути TREE имеет формат:

TREE [диск:][путь] [/F] [/A]

Ключ /F – Вывод имен файлов в каждой папке.

Ключ /A – Использовать символы ASCII вместо символов национальных алфавитов.


Пример 1.7. Последовательное создание вложенных каталогов и попытка удаления непустого каталога

d:\WINLAB>md  papa
d:\WINLAB>md  papa\math
d:\WINLAB>md  papa\math\strong
d:\WINLAB>
		

Весьма сильной стороной использования команды MKDIR является возможность одновременного создания нескольких цепочек вложенных каталогов (Примеры 1.7, 1.8) – при этом такие цепочки должны отделяться друг от друга пробелами или запятыми.


Пример 1.8. Создание нескольких цепочек вложенных каталогов

d:\WINLAB>mkdir  papa\math\strong  papa\math\study
d:\WINLAB>tree .
D:\WINLAB
└───papa
    └───math
        ├───strong
        └───study
d:\WINLAB>
		

Довольно часто, для просмотра существующих каталогов и файлов используется команда DIR, отображающая список имен каталогов и файлов в указанной директории в различных форматах, определяемых ключами команды. Использование команды DIR без ключей приводит к появлению на экране избыточной информации. Чтобы получить только список имен каталогов и файлов, команду DIR необходимо запустить с ключом /B (Пример 1.9).


Пример 1.9. Просмотр списков имен каталогов и файлов командой DIR


d:\WINLAB>dir /b
papa
d:\WINLAB>dir papa /b
incredible
math
d:\WINLAB>dir papa\math /b
strong
study
d:\WINLAB>dir papa\math\strong /b
papa1.txt
d:\WINLAB>
		

Будучи запущенной без параметров, команда DIR отображает список каталогов и файлов текущей директории (Пример 1.9). Одновременное использование ключа /S совместно с ключом /B инициирует вывод на экран всех вложенных каталогов и файлов с полными путями (Пример 1.10).


Пример 1.10. Отображение всех вложенных файлов и подкаталогов

d:\WINLAB>dir papa /b /s
d:\WINLAB\papa\incredible
d:\WINLAB\papa\math
d:\WINLAB\papa\incredible\papa3.txt
d:\WINLAB\papa\incredible\papa4.txt
d:\WINLAB\papa\math\strong
d:\WINLAB\papa\math\study
d:\WINLAB\papa\math\strong\papa1.txt
d:\WINLAB\papa\math\study\papa2.txt
d:\WINLAB>
		

В наиболее общем случае формат команды DIR выглядит следующим образом:

DIR [диск:][путь][имя файла] [/A[[:]атрибуты]] [ключи]


/A – Отображение файлов с указанными атрибутами:

D – Каталоги; R – Файлы; H – Скрытые файлы; S – Системные файлы; A – Файлы, готовые для архивирования; I – Файлы с неиндексированным содержимым; L – Точки повторной обработки; Префикс «-» имеет значение НЕ.

/B – Вывод только имен файлов.

/C – Применение разделителя групп разрядов при выводе размеров файлов. Используется по умолчанию. Ключ /-C отключает применение разделителя групп разрядов.

/D – Вывод списка в нескольких столбцах с сортировкой по столбцам.

/L – Использовать нижний регистр для имен файлов.

/N – Новый формат длинного списка, имена файлов выводятся в крайнем правом столбце.

/O – Сортировка списка отображаемых файлов.

N – По имени (по алфавиту); S – По размеру (с минимального); E – По расширению (по алфавиту); D – По дате и времени (начиная с самого старого); G – Начать список с каталогов – префикс «-» обращает порядок; /P – Пауза после заполнения каждого экрана.

/Q – Вывод сведений о владельце файла.

/R – Отображение альтернативных потоков данных файла.

/S – Отображение файлов каталога и всех его подкаталогов.

/T – Выбор поля времени для сортировки.

C – Время создания; A – Время последнее использования;

W – Время последнего изменения.

/W – Вывод списка в несколько столбцов.

/X – Формат аналогичен выводу с ключом /N, но короткие имена выводятся слева от длинных имен файлов. Если короткого имени у файла нет, вместо него выводятся пробелы.

/4 – Вывод номера года в четырехзначном формате.

Ненужные или неудачно созданные каталоги могут быть удалены из файловой системы путем использования полностью идентичные по своему действию команды RD или RMDIR (remove directory) в формате:

RMDIR [/S] [/Q] [диск:]путь

RD [/S] [/Q] [диск:]путь


Ключ: /S – удаление каталога со всеми вложенными каталогами

Ключ: /Q – отключение запроса на подтверждение при удалении вложенных каталогов, при использовании ключа /S.

Применение RD или RMDIR без ключей для удаления каталога PAPA, содержащего вложенные каталоги, не приведет к успеху, тогда как использование ключей полностью решает задачу удаления любых каталогов – о чем свидетельствуют результаты просмотра как командой DIR, так и командой TREE (Пример 1.11).


Пример 1.11. Удаление всех вложенных файлов и подкаталогов

d:\WINLAB>rd papa
Папка не пуста.
d:\WINLAB>rd papa /q /s
d:\WINLAB>dir /b
d:\WINLAB>tree .
D:\WINLAB
Подпапки отсутствуют
d:\WINLAB>
		

Неудача в создании каталога может заключаться в ошибке его именования (например, в дереве Рис. 5.1 вместо каталога STUDY был создан STADY) – тогда совсем необязательно удалять каталог, а достаточно его переименовать. Переименование каталогов может потребоваться и в ряде других случаев, для этого применяются полностью идентичные команды: REN и RENAME в формате:

RENAME [диск:][путь]имя_файла1 имя_файла2

REN [диск:][путь]имя_файла1 имя_файла2


Весьма важно отметить, что команды REN и RENAME это именно команды переименования каталогов и файлов, а не перемещения (как команда MOVE – § 1.4), поэтому для конечного каталога (нового имени) не может быть указано другое местоположение – другой диск или другой каталог (Пример 1.12).


Пример 1.12. Переименование каталога

d:\WINLAB>dir papa\math /b
stady
strong
d:\WINLAB>ren papa\math\stady papa\study
Ошибка в синтаксисе команды.
d:\WINLAB>ren papa\math\stady study
d:\WINLAB>dir papa\math /b
strong
study
d:\WINLAB>
		

Важнейшим вопросом для файловой системы является навигация по дереву существующих каталогов – т.е. возможность смены текущего каталога и, соответственно использование коротких относительных путей для вложенных каталогов, вместо абсолютных. Изменение текущего каталога в командном интерпретаторе Cmd.exe осуществляется идентичными командами CD или CHDIR (change directory) в формате:

CHDIR [/D] [диск:][путь] CD [/D] [диск:][путь]

При отсутствии параметров на экран выводится имя текущего каталога (Пример 1.8), а при наличии параметра происходит смена текущего каталога – текущим становится каталог, указанный в качестве параметра команды CD или CHDIR через абсолютный или относительный путь (Пример 1.13).


Пример 1.13. Вывод имени текущего каталога

d:\WINLAB>cd
D:\WINLAB
d:\WINLAB>
		

Если в качестве параметра команде CD или CHDIR указано только имя диска, то результатом будет отображение текущего каталога на указанном диске – при смене диска командный интерпретатор запоминает текущий каталог на диске, и при следующем выборе диска текущий каталог не изменится (Пример 1.14).


Пример 1.14. Вывод имени текущего каталога на диске

d:\WINLAB\papa\math\study>c:
C:\Users >cd d:
D:\WINLAB\papa\math\study
C:\Users >d:
d:\WINLAB\papa\math\study>
		

Использование ключа /D в командах CD и CHDIR позволяет осуществлять изменение текущего диска и текущего каталога одной командой (Пример 1.15).


Пример 1.15. Одновременная смена текущего диска и текущего каталога

d:\WINLAB\papa\math\study>c:
C:\Users> 
C:\Users> cd /D d:\winlab\papa
d:\WINLAB\papa>
		

Для выбора текущего каталога, удобного для работы в конкретной ситуации используются как абсолютные пути к каталогам, так и различные способы записи относительных путей (Пример 1.16). Это же касается всех остальных команд Cmd.exe, работающих с каталогами и файлами.


Пример 1.16. Смена текущего каталога с различной записью путей

d:\WINLAB>tree .
D:\WINLAB
└───papa
    ├───incredible
    └───math
        ├───strong
        └───study
d:\WINLAB>cd papa\math\strong
d:\WINLAB\papa\math\strong>cd ..\..\incredible
d:\WINLAB\papa\incredible>cd d:\WINLAB\papa\math\study
d:\WINLAB\papa\math\study>cd ..\strong
d:\WINLAB\papa\math\strong>cd \winlab
d:\WINLAB>
		

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


Пример 1.17. Смена текущего каталога в режиме расширенной обработки

d:\WINLAB>md "new name"
d:\WINLAB>chdir new name
d:\WINLAB\new name>
d:\WINLAB\new name>cd ..
d:\WINLAB>rd new name
Не удается найти указанный файл.
d:\WINLAB>rd "new name"
d:\WINLAB>