Я пытаюсь сделать список каталогов файлов с именами файлов, состоящими из 8 символов, сопровождаемых периодом и расширением файла в командном процессоре Windows. Подстановочный шаблон, который я использую,"????????.TIF". Это возвращает ВСЕ имена файлов с ".TIF" расширением, независимо от длины преддополнительной части имени файла. Пример:
dir A*.TIF
Возвраты ABCDEFGH.TIF и ABCDEFGHIJ.TIF
dir????????.TIF
Также возвраты оба файла. Я ожидал бы, что только первый будет возвращен, так как это - единственный из двух, который соответствует шаблону (8 отдельных символов, сопровождаемых ".TIF".), Каково объяснение этого поведения?
Заранее спасибо за любые ответы.
Я думаю, что проблема - это ABCDEFGHIJ.TIF
имеет краткое название чего-то как ABCDEF~1.TIF
и это подбирается Вашим шаблоном.
Если Вы используете DIR /X
Вы будете видеть краткие названия - т.е. 8,3 имен файла - всех Ваших файлов.
Вы могли попробовать что-то вроде этого:
DIR /B | FINDSTR /R /I "^........\.TIF"
Это использует FINDSTR в режиме регулярного выражения для обеспечения точно 8 символов перед .TIF
. Поскольку больше справки на FINDSTR входит FINDSTR /?
в командной строке.
?
средства соответствуют любому отдельному символу. Путем выполнения a dir ????????.TIF
Вы говорите, возвращают любые файлы, которые имеют 8 символов и a .tif
расширение, в то время как dir A*.tif
средства возвращают любые файлы, которые запускаются с A
или и имеют .tif
как расширение
Если Вы хотите исправить это, открыть поднятую командную строку и тип:
fsutil 8dot3name set 1
Существующие файлы все еще покажут проблему, пока Вы не сняли изоляцию с короткого имени файла. Новые файлы, которые Вы копируете/создаете, не будут иметь проблемы. Если Вам нужно к массовым коротким именам файлов полосы, можно использовать:
fsutil 8dot3name strip /s <directory>
Проблема, кажется, происходит от Windows 7 с помощью короткого имени файла для подстановочных знаков вместо длинного имени файла.