DIR – отобразить список папок и файлов в каталоге.

Dir – отобразить список папок и файлов в каталоге.

Команда DIR позволяет отобразить список файлов и подкаталогов для
указанного каталога. Список может быть отсортирован по множеству критериев,
задаваемых параметрами командной строки.

Формат командной строки:


DIR [диск:][путь][имя_файла] [/A[[:]атрибуты]] [/B] [/C] [/D] [/L] [/N] [/O[[:]порядок]] [/P] [/Q] [/S] /T[[:]время]] [/W] [/X] [/4]

Параметры командной строки:

[диск:][путь][имя_файла] – Диск, каталог и/или файлы, которые следует включить в список.

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

D Каталоги
R Доступные только для чтения
H Скрытые файлы
A Файлы для архивирования
S Системные файлы
Префикс “-” имеет значение НЕ
-S НЕ системные файлы.

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

/C – Применение разделителя групп разрядов для вывода размеров файлов (по умолчанию). Для отключения этого режима служит ключ /-C.

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

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

/N – Отображение имен файлов в крайнем правом столбце.

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

Порядок: N По имени (алфавитная), S По размеру (сперва меньшие), E По расширению (алфавитная), D По дате (сперва более старые), G Начать список с каталогов. Префикс “-” имеет значение НЕ

/P – Пауза после заполнения каждого экрана.

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

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

/S – Вывод списка файлов из указанного каталога и его подкаталогов.

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

время:
C Создание (время создания – Create )
A Последнее использование (последний доступ – Accsess )
W Последнее изменение (последняя модификация Write)
/W – Вывод списка в несколько столбцов.

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

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

Стандартный набор ключей можно записать в переменную среды DIRCMD. Для отмены их действия введите в команде те же ключи с префиксом “-“, например: /-W.

DIR /? – отобразить справку по использованию команды.

DIR – отобразить список файлов и подкаталогов текущего каталога.

DIR /P – отобразить список файлов и подкаталогов текущего каталога в режиме постраничного вывода на экран. При выполнении команды DIR с данным ключом,
после заполнения экрана, вывод информации приостанавливается до нажатия какой-либо клавиши. Аналогично выполнению команды DIR в цепочке с командой MORE
DIR | MORE

DIR > C:listdir.txt – отобразить список файлов и подкаталогов текущего каталога с
выводом результатов в текстовый файл .

DIR C:WINDOWS*.dll – отобразить список файлов с расширением dll из каталога
C:WINDOWS

DIR C:WINDOWSSYSTEM32X*.* – отобразить список файлов из каталога
C:WINDOWSSYSTEM32, имена которых начинаются с символа X

DIR C:WINDOWSSYSTEM32*Y.EXE – отобразить список файлов с расширением .exe из каталога
C:WINDOWSSYSTEM32, имена которых заканчиваются символом Y

DIR C:WINDOWSsystem32???t.* – отобразить список файлов, имя которых содержит
3 любых символа ( ??? ) и символ t

DIR C:WINDOWSSYSTEM32*.* /A:H – отобразить список скрытых файлов и подкаталогов из каталога C:WINDOWSSYSTEM32

DIR C:WINDOWSSYSTEM32*.* /A:H – отобразить список скрытых файлов и подкаталогов из каталога C:WINDOWSSYSTEM32

DIR C: /A:-AH – отобразить список скрытых ( H ) файлов и подкаталогов из корневого каталога диска C: без атрибута “Архивный” ( -A )

DIR C: /A:DH – отобразить список скрытых каталогов в корне диска C:

dir c: /a:DH /d – тоже самое, но с отображением информации в несколько столбцов, с сортировкой имен в алфавитном порядке. Пример результата:


Том в устройстве C имеет метку C

Серийный номер тома: 1884-ABEC

Содержимое папки c:

[Config.Msi]              [System Volume Information] [Fix-It]                       [VCOM] [RECYCLER]

0 файлов 0 байт

5 папок 103 593 283 584 байт свободно

Та же информация, но параметр /D не задан:

:/>  Как скачать официальные ISO-образы Windows 10 без Media Creation Tool


Том в устройстве C имеет метку C

Серийный номер тома: 1884-ABEC

Содержимое папки c:

16.01.2021 11:22 < DIR > Config.Msi

26.04.2021 09:05 < DIR > Fix-It

25.07.2021 11:31 < DIR > RECYCLER

03.08.2021 16:06 < DIR > System Volume Information

24.04.2008 17:36 < DIR > VCOM

0 файлов 0 байт

5 папок 103 593 283 584 байт свободно

Для сортировки имен отображаемых файлов и каталогов используется параметр /O

/O:N – сортировать по имени в алфавитном порядке( Name ) С использованием знака ” – ” – сортировать в обратном порядке.

/O:S – сортировать по размеру в возрастающем порядке( Size ). Со знаком ” – ” – сортировать в порядке убывания размеров файлов.

/O:E – сортировать по расширению имени файла ( Extension )
/O:-E – в обратном порядке

/O:D – сортировать по дате и времени модификации файла или каталога.

/O:-D – в обратном порядке ( от новых к старым )

/O:G – сначала отображать список каталогов, затем – файлов.

Использование параметра /T позволяет отсортировать списки файлов и каталогов в соответствии с отметками времени ( Time Stamp ), хранящимися в
файловой системе Windows для каждого из них:

/T:C – сортировать по времени создания ( Creation )

/T:A – сортировать по времени доступа ( Access )

/T:W – сортировать по времени модификации, последней
операции записи ( Written ). Этот параметр используется по умолчанию.

dir %temp%*.* /a:H /TC – отобразить все скрытые файлы и папки в каталоге временных файлов, заданном переменной среды окружения TEMP, и отсортировать их в порядке возрастания даты создания.

dir %SystemRoot%system32*.exe /b /a:H /TA – отобразить список скрытых исполняемых файлов в системном каталоге и отсортировать их по времени последнего доступа.

DIR C: /X – отобразить список файлов и каталогов в корневом каталоге диска C:
с отображением коротких имен для файлов, чьи имена не соответствуют
стандарту 8.3. Стандарт 8.3 означает, что для имени файла отводится не более 8 символов, а для расширения – не более 3-х. Этот стандарт использовался в устаревших
операционных системах семейства MS-DOS, не поддерживавших длинные имена файлов.
Длинные имена преобразуются в короткие с использованием первых шести символов и конструкции ~N, где N – это порядковый номер для
имен, имеющих одинаковое начало и разное окончание после 8-го символа:


28.01.2021 16:48 < DIR >                            DOCUMENT

28.01.2021 16:41 < DIR > DOCUME~2    DOCUMENTS

15.07.2021 12:00 < DIR > DOCUME~1     Documents and Settings

В примере отображается список из 3-х каталогов:

DOCUMENT – имя каталога содержит 8 символов и не преобразуется в стандарт 8.3

DOCUMENTS – имя содержит 9 символов и в формате 8.3 представлено как
DOCUME~2

Documents and Settings – представлено как DOCUME~1 поскольку
длинное имя файла преобразуется в стандарт 8.3 с учетом строчных и заглавных
символов, а коды строчных букв следуют в таблице символов перед кодами
заглавных.

Параметры командной строки команды DIR можно определить в переменной окружения
DIRCMD.

SET DIRCMD=/O:N /B /P – определить параметры /O, /B и /P.

После этого, выполнение команды DIR без параметров будет аналогично
выполнению команды:

DIR /O:N /B /P

Если в командной строке команды DIR задан параметр, определенный в переменной DIRCMD, то его значение более приоритетно, и будет использоваться в процессе выполнения данной команды.

Для расширения возможностей команды DIR можно воспользоваться объединением ее в цепочку с командой поиска текстовой информации FIND

DIR C:*.* /s | FIND “28.01.2021” – отобразить список всех файлов и каталогов диска C: имеющих отметку времени “28 января 2021 г.”

Для обработки отдельных полей из строк вывода результатов команды DIR можно воспользоваться командой FOR

Параметр командной строки /R применим только в Windows 7 и более поздних версиях. Он используется для отображения альтернативных потоков файлов в файловой системе NTFS.

:/>  Батник на удаление файлов по расширению

dir /r – отобразить список файлов текущего каталога с именами альтернативных потоков.

dir /r proxylist.zip – отобразить список альтернативных потоков файла proxylist.zip.
Пример отображаемой информации:


455 881 proxylist.zip
26 proxylist.zip:$CmdZnID:$DATA
26 proxylist.zip:Zone.Identifier:$DATA

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

Статья – [cmd] циклические операции и примеры (команда for)

Продолжение…

Особенности, которые распространяются на циклы FOR

0) Если нужно записать в наборе несколько команд, то используем:

а) знаки амперсанда &, если мы хотим записать все в одну строку:

б) знаки скобок, если хотим разбить команды в несколько строк для наглядности и удобства:

1) Пустые строки в содержимом файлов и выводе команд игнорируются.

2) Если предполагается получение пустого токена, остальные токены смещаются.
К примеру,
имеем файл с содержимым:

file.txt написал(а):

Применим команду:

Результат будет:

cmd написал(а):

вместо ожидаемого

cmd написал(а):

3) Все специальные (служебные) символы необходимо экранировать (предварять птичкой ^).

Это такие символы, как | = ^ < > &. А также % ! – если они используются не для раскрытия переменной, кроме случая с !, когда не включено удаленное расширение переменных.

Сюда же входит знак кавычки, которая соответствует форме кавычки, применяемой для определения вида набора.

4) Регистр переменной цикла имеет значение.

5) Изменить вручную значение переменной цикла нельзя. Например, set %%A=param не даст эффекта.

6) После выхода из цикла переменная цикла уничтожается.

7) Внутри цикла можно использовать не более 1-го комментария вида :: (иначе, будет критическая ошибка и “вылет” из пакетного файла)
Вместо этого используем Rem.

8) Внутри цикла можно использовать не более 1-й метки (иначе, будет такой же “вылет”).

Пример максимально допустимой конструкции:

9) Тем не менее из цикла можно безвозвратно выйти на метку Goto metka

а также выйти в подпрограмму и вернутся снова в цикл точно в ту же позицию через команду Call :metka

В конце подпрограммы должна стоять команда

Exit /B

10) Для получения значения обычной переменной внутри цикла в случае, если этой переменной было присвоено новое значение внутри тела этого же цикла, необходимо раскрывать переменную через знаки восклицания !variant! – это называется отложенное расширение переменных.
Перед использованием такого способа, его нужно включить, задав в начале пакетного файла команду:

Иначе, если использовать обычный способ раскрытия

%variant%

, мы получим значение переменной, присвоенное ей еще до входа в цикл.

Точно таким же образом (через ! ) необходимо раскрывать переменную времени внутри цикла, т.к. иначе для цикла время “замерзает”.

Происходит это потому, что в цикл попадает т.н. “слепок” переменных среды. И работа с ними через % происходит уже как с копией данных, а не актуальными значениями.

11) Когда после IN указана команда, под разбор цикла попадают такие потоки:
1-й поток (StdOut)
с 3-го по 9-й поток (User Stream)

При этом 2-й поток (StdError) отображается на экране сразу после выполнения указанной в цикле команды в IN (…)
2-й поток можно занулить, обычным способом, не забыв экран:

Также можно перенаправить 2-й поток, чтобы он обрабатывался вместе с первым, вместо его вывода на экран:

Собственно, чтобы наоборот, обрабатывать 2-й поток вместо первого, можно воспользоваться следующей конструкцией:

12) При запуске цикла из консоли (cmd.exe) переменные цикла нужно указывать без удвоения знака процента

:/>  При подключении к интернету безопасность windows 10

%a

.

Это же правило касается вызова цикла через Shell-подобные команды на других языках программирования.

13) Переменную цикла нельзя раскрыть внутри строки модификаторов другого цикла:

но есть способ обхода от

ComSpec

:

§

Продолжение…

Особенности, которые распространяются на циклы FOR

0) Если нужно записать в наборе несколько команд, то используем:

а) знаки амперсанда &, если мы хотим записать все в одну строку:

б) знаки скобок, если хотим разбить команды в несколько строк для наглядности и удобства:

1) Пустые строки в содержимом файлов и выводе команд игнорируются.

2) Если предполагается получение пустого токена, остальные токены смещаются.
К примеру,
имеем файл с содержимым:

file.txt написал(а):

Применим команду:

Результат будет:

cmd написал(а):

вместо ожидаемого

cmd написал(а):

3) Все специальные (служебные) символы необходимо экранировать (предварять птичкой ^).

Это такие символы, как | = ^ < > &. А также % ! – если они используются не для раскрытия переменной, кроме случая с !, когда не включено удаленное расширение переменных.

Сюда же входит знак кавычки, которая соответствует форме кавычки, применяемой для определения вида набора.

4) Регистр переменной цикла имеет значение.

5) Изменить вручную значение переменной цикла нельзя. Например, set %%A=param не даст эффекта.

6) После выхода из цикла переменная цикла уничтожается.

7) Внутри цикла можно использовать не более 1-го комментария вида :: (иначе, будет критическая ошибка и “вылет” из пакетного файла)
Вместо этого используем Rem.

8) Внутри цикла можно использовать не более 1-й метки (иначе, будет такой же “вылет”).

Пример максимально допустимой конструкции:

9) Тем не менее из цикла можно безвозвратно выйти на метку Goto metka

а также выйти в подпрограмму и вернутся снова в цикл точно в ту же позицию через команду Call :metka

В конце подпрограммы должна стоять команда

Exit /B

10) Для получения значения обычной переменной внутри цикла в случае, если этой переменной было присвоено новое значение внутри тела этого же цикла, необходимо раскрывать переменную через знаки восклицания !variant! – это называется отложенное расширение переменных.
Перед использованием такого способа, его нужно включить, задав в начале пакетного файла команду:

Иначе, если использовать обычный способ раскрытия

%variant%

, мы получим значение переменной, присвоенное ей еще до входа в цикл.

Точно таким же образом (через ! ) необходимо раскрывать переменную времени внутри цикла, т.к. иначе для цикла время “замерзает”.

Происходит это потому, что в цикл попадает т.н. “слепок” переменных среды. И работа с ними через % происходит уже как с копией данных, а не актуальными значениями.

11) Когда после IN указана команда, под разбор цикла попадают такие потоки:
1-й поток (StdOut)
с 3-го по 9-й поток (User Stream)

При этом 2-й поток (StdError) отображается на экране сразу после выполнения указанной в цикле команды в IN (…)
2-й поток можно занулить, обычным способом, не забыв экран:

Также можно перенаправить 2-й поток, чтобы он обрабатывался вместе с первым, вместо его вывода на экран:

Собственно, чтобы наоборот, обрабатывать 2-й поток вместо первого, можно воспользоваться следующей конструкцией:

12) При запуске цикла из консоли (cmd.exe) переменные цикла нужно указывать без удвоения знака процента

%a

.

Это же правило касается вызова цикла через Shell-подобные команды на других языках программирования.

13) Переменную цикла нельзя раскрыть внутри строки модификаторов другого цикла:

но есть способ обхода от

ComSpec

:

Оставьте комментарий