Удивительные шаблоны поиска в Windows.

Sep 04, 2020 18:39


Допустим, у вас в каталоге есть файлы foo.a и bar.ab. Команда dir *.a выдаст только foo.a, что вполне логично. Но если расширение файла в строке поиска состоит из трёх и более символов, всё резко меняется. Например, в каталоге есть файлы foo1.txt и foo2.txtnew. Команда dir *.txt выдаст оба!

Но и это ещё не всё. Пусть в каталоге есть файл longfilename.txt. Тогда команда dir *1*.txt выдаст его.

Всё дело в том, что на соответствие шаблону поиска проверяются как длинные имена файлов, так и короткие в формате 8.3, унаследованном ещё из DOS. Короткое имя у foo2.txtnew будет foo2~1.txt, а у longfilename.txt - longfi~1.txt (если в каталоге есть другие файлы с длинными именами, цифры в коротком имени могут измениться, но это уже частности). Как видите, эти имена соответствуют шаблону поиска, так что формально Windows права. Кстати, посмотреть короткие имена файлов можно с помощью команды dir /x.

Такие вот тщательно замаскированные грабли.

Удивительное рядом, windows shell

Previous post Next post
Up