2014-02-04 3 views
2

До сих пор я думал, что если я dir *.aaa я буду получать все файлы с расширением .aaa, после доказывает меня неправильно:`dir` рассматривать только длинные имена файлов

echo >a.aaa 
echo >a.aaa_bbb 
dir /b *.aaa 

печатает

a.aaa 
a.aaa_bbb 

Это не совсем то, что я ожидаю. Я думаю, это потому, что имя a.aaa_bbb в 8.3 имеет расширение .aaa. Как заставить dir не рассматривать имена 8.3? Или предложите любой другой способ перечислить файлы по маске файла, которые не учитывают имена 8.3.

UPD: Спасибо. Невозможно отметить оба ответа как принятые, но оба они хороши.

+0

'реж/х * .aaa' показывает, что ваше предположение верно. – EricLaw

ответ

3

forfiles /M *.aaa делает трюк. Существует множество параметров для изменения вывода в соответствии с вашими потребностями. См forfiles /?

3

Вот один из способов:

dir *.aaa /b |findstr /i "\.aaa$" 

или это: (удвоит % к %% для использования в пакетном файле)

for %a in (*.aaa) do if /i "%~xa"==".aaa" echo %a 
Смежные вопросы