Исключение файлов определенного расширения с помощью команды DIR в командной строке Windows

Вопрос или проблема

Если я хочу увидеть, например, файлы с определенным расширением, используя команду dir, я могу сделать это с помощью команды:

DIR *.txt 

И это покажет все файлы с расширением .txt.
Теперь я хочу знать, есть ли команда, с помощью которой я могу исключить определенные расширения?
Например, я не хочу видеть файлы с расширением .exe, как я могу это сделать?

DIR не позволит вам сделать то, что вы пытаетесь. Однако DIR в сочетании с FINDSTR может решить эту задачу.

Например, следующая команда игнорирует все файлы .txt в выводе DIR.

dir | findstr /v /i "\.txt$" 

dir /B | find /V ".txt"

Это перечислит все файлы, а find отфильтрует все, что не содержит “.txt”. Это далеко не идеальный вариант, но, возможно, этого достаточно 🙂

Это зависит от вашего командного интерпретатора.

В cmd от Microsoft нет такой функции, как видно из других ответов, где необходимо предварительно обработать вывод dir. Однако инструмент от JP Software’s TCC/LE имеет эту функцию. Она называется диапазон исключения файлов и используется следующим образом для примера из вашего вопроса:

dir /[!*.exe] *

Для этой цели определите макрос с помощью DOSKEY. Я исключил директории и игнорировал регистр — YMMV. Кроме того, /B кажется самым разумным параметром DIR для фильтрации, /D и /W не подойдут для этой задачи, а длинные форматы /N (по умолчанию) и /X содержат, в некоторых случаях, дополнительный текст после имени файла (для символических ссылок). Проверьте это в командной строке:

DOSKEY  FIR=DIR/B/A-D^|FINDSTR /VIE $*
DOSKEY FLIR=DIR/X/A-D^|FINDSTR /VIE $*

FIR для фильтрованного DIR, поняли? 🙂 А FLIR для длинной версии, если нужно. Затем используйте это так:

fir .jpg
flir jpg
fir "jpg htm"

Последний пример связан с тем, как FINDSTR читает шаблоны, переданные в качестве аргументов, как описано в /?. Только первый аргумент рассматривается как шаблон, дополнительные интерпретируются как имена файлов, даже при работе в конвейере.

Я предпочитаю FINDSTR простому FIND, потому что у него есть переключатель /E, который фильтрует только в конце строки, что, по-моему, предпочтительнее при фильтрации по расширению файла (но опять же, YMMV).

Полезный сайт SS64 объясняет, как настроить макросы в текстовом файле для постоянного использования. Учтите, что не нужно использовать каретку ^ для экранирования специальных символов для макросов, хранящихся в текстовом файле.

Чтобы понять основы работы макросов (“Консольные псевдонимы”) изнутри, прочитайте короткие комментарии Эрика Суна на SO.

Обходной путь — использовать Notepad++

Удерживайте alt и выбирайте ваши имена файлов/текста из вывода команды dir и вставьте в Notepad++

Закладка строк с текстом, который вы хотите или не хотите, а затем удаление закладок или незакладок в меню поиска.

Ответ или решение

К сожалению, в командной строке Windows (cmd) команда DIR не поддерживает прямое исключение файлов по расширениям. Тем не менее, есть способы обойти это ограничение с помощью дополнительных инструментов и команд, таких как FINDSTR. В этой статье мы рассмотрим, как использовать эти команды для создания списка файлов, исключая определенные расширения.

Использование команды DIR и FINDSTR

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

dir | findstr /v /i "\.exe$"

Объяснение команд:

  • dir: Эта команда выводит список всех файлов и папок в текущем каталоге.
  • |: Символ пайпа, который позволяет использовать вывод одной команды в качестве ввода для другой.
  • findstr: Это команда, предназначенная для поиска строк в текстовом файле.
  • /v: Эта опция заставляет команду искать только те строки, которые не содержат указанный текст (в данном случае, строки с .exe).
  • /i: Этот параметр игнорирует регистр символов.

Таким образом, команда dir | findstr /v /i "\.exe$" будет выводить все файлы, игнорируя файлы с расширением .exe.

Альтернативный вариант: Использование DOSKEY для упрощения команд

Для повышения удобства использования данной команды можно определить макрос с помощью DOSKEY и легко фильтровать файлы по расширениям. Например:

DOSKEY FIR=DIR/B/A-D | FINDSTR /VIE $*

Как это работает:

  • FIR: Имя макроса, который вы создаете.
  • DIR/B/A-D: Эта команда выводит список файлов без дополнительной информации и игнорирует папки.
  • FINDSTR /VIE $*: Этот параметр позволяет вводить набор расширений для исключения.

Теперь вы можете использовать созданный макрос следующим образом:

fir .jpg

Эта команда будет выводить все файлы, за исключением тех, которые имеют расширение .jpg.

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

Если команда CMD не покрывает все ваши потребности, рассмотрите возможность использования альтернативных оболочек, таких как TCC/LE от JP Software. Эта оболочка поддерживает более сложные функции, в том числе исключение файлов по расширению напрямую через команду:

dir /[!*.exe] *

Заключение

Хотя команда DIR в Windows не предоставляет возможности исключить файлы определенных расширений напрямую, вы все равно можете использовать комбинацию DIR и FINDSTR, а также настраиваемые макросы через DOSKEY для достижения этой цели. Если вам необходимы более продвинутые функции фильтрации, стоит рассмотреть использование альтернативных командных интерпретаторов. Оптимизированный подход к использованию командной строки может значительно улучшить вашу эффективность при управлении файлами в Windows.

Оцените материал
Добавить комментарий

Капча загружается...