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

19

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

DIR *.txt 

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

Johnydep
источник

Ответы:

26

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

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

dir | findstr /v /i "\.txt$" 
IUnknown
источник
1
вы можете захотеть использовать, dir /b | findstr /v /i "\.txt$"потому что dirв конце
выведет
Почему findstrтолько что find?
Сопалахо де Арриерес
Поскольку find ищет текст и findstr поддерживает регулярные выражения, я предложил Findstr. Если вы просто хотите найти точную строку, поиск тоже подойдет.
IUnknown
8
dir /B | find /V ".txt"

Это выведет список всех файлов, а команда find отфильтрует все, что не содержит «.txt». Это далеко от совершенства, но, может быть, этого достаточно :)

Der Hochstapler
источник
Нет необходимости /B, я бы сказал, но я предпочитаю этот ответ, пока я не вижу необходимости в «findstr» (фактический принятый).
Сопалахо де Арриерес
3

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

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

dir /[!*.exe] *

JdeBP
источник
Спасибо, но я думаю, что этот инструмент работает как отдельная программа. Я делаю свое приложение, где я запускаю внешний процесс, используя оболочку Windows или Bash в Ubuntu, поэтому этот инструмент не подойдет, если они предоставляют переключатели строки CMD, то это будет полезно.
Johnydep
1
Вышеуказанное явно является переключателем командной строки. Прочитайте гиперссылочную документацию. Конечно, в большинстве языков программирования довольно глупо переходить к использованию оболочки для получения содержимого каталога , и вы используете неправильный StackExchange для написания приложений.
JdeBP
спасибо за объяснение, это правда, но это обходной путь для сканирования тех каталогов, которые требуют повышения прав, и я не хочу, чтобы мой код вызывал приглашение UAC, когда я могу получить результаты из приглашения cmd, не требуя более высокой привилегии.
Johnydep