- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
> echo 1 >1.cp
> echo 1 >1.cpp
> echo 1 >1.cppp
> dir /b *.cp
1.cp
> dir /b *.cpp
1.cpp
1.cppp
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+129
> echo 1 >1.cp
> echo 1 >1.cpp
> echo 1 >1.cppp
> dir /b *.cp
1.cp
> dir /b *.cpp
1.cpp
1.cppp
Баг в FindFirstFile/FindNextFile, показан на виндовом dir для простоты демонстрации. Призрак DOS'а жив даже в семерке...
...
18.01.2013 14:45 4 1.cpp
18.01.2013 14:45 4 137E2~1.CPP 1.cppp
...
> dir /b 13*.*
1.cppp
Генерация коротких имён включена по умолчанию.
P.S. Вывод последнего dir'а рвёт мозг. Но такая схема работать будет во всех случаях, когда короткое имя не совпадает с длинным, а не только когда в расширении больше трёх символов.
P.S. Не ну есть конечно вариант - отключить параметр в реестре, отвечающий за генерацию коротких имен, но это совсем уж радикальный вариант. Один хрен багует, что с *.cpp, что с *.CPP. ВиндаГовно.
FindExInfoBasic
The FindFirstFileEx function does not query the short file name, improving overall enumeration speed.
dir *~* > wtf.txt && start wtf.txt
P.S. Нахуя зачем нужен этот код? Найти файлы не проходящие по 8.3, и следовательно отображаемые в досе не так (а также до кучи все файлы с тильдами в духе ~1.txt и 1.txt~)? Или есть еще какой-то скрытый смысл, недоступный простым смертным?
В виндосервере 2003+ по дефолту вообще отключена поддержка говна мамонта досовских имен.
Не лучше уж отдельный коммандком для тех кому еще нужно работать с досовскими прогами, чем костыли во всех виндовых прогах пользующихся FindFirstFile, включая все шарпейские проги, использующие DirectoryInfo.GetFile.
каптча 8383
У клиентов? Лолшто. Так и представляю себе звонок в техподдержку - "Алло, у меня вместо *.doc ищутся *.docx, что мне сделать?" - "Отключите поддержку коротких имен для тома" - "Да пошли вы нахуй, у меня фокспро до сих пор юзается".
P.S. Какие вы там проблемы кстати заметили с gnu make, из-за которых вы так защищаете 8.3 имена?
И причем тут дособлядские 8.3?
Если надо найти файлы с пробелами - запускаете
ls "C:\Program Files"
А что происходит при установке в %ProgramFiles%?
Не работает. У make $^ сломаются, и еще много что сломается. Она не умеет нормально экранировать пробелы при генерации команд.
Я так похож на идиота, который поставит мингв в путь с пробелами забив на все предупреждения?
Так причем же тут 8.3 имена, guest?
Чем же твой dir *~* (требующий поддержки багофичи с поиском 8.3 имен) полезней dir "* *" в плане работы с gnu make, guest?
Не толстый ли ты тролль, guest?
В Микрософте всерьёз думают, что заполнение лишнего поля даст заметный прирост тормозов по сравнению с операциями над файловой системой?
http://technet.microsoft.com/en-us/library/cc754351.aspx
В Windows NT короткое имя может выглядеть, как адский трэш (перед тильдой будут шестнадцатеричные цифры), а кроме того, оно ещё и опционально.
Скриншот http://s002.radikal.ru/i198/1303/41/672be625b131.png