В MS-DOS, если я введу dir *.pdf, я получу все файлы PDF в каталоге. Есть ли способ получить все, кроме PDF-файлов? Что-то вроде dir !*.pdf?
Спасибо!
В MS-DOS, если я введу dir *.pdf, я получу все файлы PDF в каталоге. Есть ли способ получить все, кроме PDF-файлов? Что-то вроде dir !*.pdf?
Спасибо!
Я думаю, что есть опция /v для findstr, которая эквивалентна grep -v (включает все строки, которые не содержат текст. Поэтому я бы посмотрел на:
dir | findstr /vi ".pdf"
Синтаксис может немного отличаться, у меня не было особой необходимости его использовать, и я не запускаю Windows в моем текущем местоположении.
Используйте findstr/? из командной строки для получения подробной информации.
Или, если вы устанавливаете CygWin (мой любимый инструмент для подобных вещей), вы можете просто использовать сам grep:
ls -al | grep -vi '\.pdf$'
Дополнение:
На самом деле я этого не осознавал, но, по-видимому, findstr также поддерживает регулярные выражения, поэтому вы можете использовать:
dir | findstr /vi "\.pdf$"
точно так же, как grep (я не проверял это, я только что нашел его на TechNet, так что вам придется проверить это самостоятельно).
Вы можете комбинировать dir с findstr, чтобы сделать почти то, что вы хотите:
dir * | findstr /vi .pdf
Однако обратите внимание, что если файл называется my.pdf.converted.txt, он будет здесь неправильно отброшен.
Если вы ДЕЙСТВИТЕЛЬНО хотите пофантазировать, вот совершенно правильная версия, более подходящая для пакетного сценария:
for /f %a in ('dir /b *') do @if "%~xa" neq ".txt" echo %a
Удачи, что бы вы ни пробовали :) DOS - это "весело".
Я знаю, что это уже работает для вас, но вы могли бы сделать это с большинством версий DOS (по крайней мере, с теми, которые я могу вспомнить), как эта.
Атрибут *.bad +H
каталог /oE
Атрибут *.bad -H
Что влияет на скрытие тех, которые вы не хотите отображать, выполнение каталога, а затем их отображение. Это немного неприятно, я должен признать, но, похоже, это помогает.
В MS-DOS или CMD вы просто вводите, чтобы избежать файлов PDF:
dir | find/V ".pdf"
Но помните, что количество файлов в нижней части вывода будет включать файлы pdf.
Кроме того, вы также можете использовать эту команду для других расширений, заменив «.pdf» на «.xxx», где xxx — любое расширение.
Вот один простой способ без использования findstr/find или конвейера к другой команде:
for %%a in (*) do (
if not exist %%~Na.pdf echo %%a
)
В основном цикл for будет перебирать все файлы. «Если не существует» гарантирует, что файл *.pdf не будет напечатан.
%%~Na означает использование имени файла переменной %%a без расширения.