3

Я пытаюсь сделать список каталогов файлов с именами файлов, состоящими из 8 символов, за которыми следует точка и расширение файла в командной оболочке Windows. Шаблон подстановки, который я использую, - «????????.TIF». Это возвращает ВСЕ имена файлов с ".TIF ", независимо от длины части перед именем файла. Пример:

Дир А *.TIF

Возвращает ABCDEFGH.TIF и ABCDEFGHIJ.TIF

dir ????????TIF

Также возвращает оба файла. Я ожидаю, что будет возвращен только первый, так как он является единственным из двух, которые соответствуют шаблону (8 одиночных символов, за которыми следует ".TIF».) Чем объясняется такое поведение?

Заранее спасибо за любые ответы.

3 ответа3

7

Я думаю, что проблема в том, что ABCDEFGHIJ.TIF имеет краткое название чего-то вроде ABCDEF~1.TIF и это соответствует вашему образцу.

Если вы используете DIR /X вы увидите короткие имена - т.е. имя файла 8.3 - из всех ваших файлов.

Вы можете попробовать что-то вроде этого:

DIR /B | FINDSTR /R /I "^........\.TIF"

Это использует FINDSTR в режиме регулярного выражения, чтобы обеспечить ровно 8 символов перед .TIF . Для получения дополнительной помощи по FINDSTR введите FINDSTR /? в командной строке.

2

Если вы хотите исправить это, откройте командную строку с повышенными правами и введите:

fsutil 8dot3name set 1

Существующие файлы будут по-прежнему иметь проблему, пока вы не удалите короткое имя файла. Новые файлы, которые вы копируете / создаете, не будут иметь проблемы. Если вам нужно массовое сокращение коротких имен файлов, вы можете использовать:

fsutil 8dot3name strip /s <directory>

Похоже, что проблема связана с Windows 7, использующей короткое имя файла для подстановочных знаков вместо длинного имени файла.

0

? означает совпадение с любым отдельным символом. Делая dir ????????.TIF вы говорите, возвращает любые файлы, которые имеют 8 символов и расширение .tif , в то время как dir A*.tif означает возврат любых файлов, которые начинаются с A или 'a' и имеют .tif в качестве расширения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .