![]() |
ОС Вин2К
есть список файлов из 19 файлов по маске 02bestUSD20031205. Делаю DIR *c*, и у меня выбирается один из этих 19 файлов. Странно то что он вооще выбирается, хотя не должен, и особенно странно, что выбирается только один, а не все 19. В чем может быть особенность? Есть подозрение, что глючит обработка символа "с" после звездочки. ДОС в незапамятные времена все что после звездочки было игнорировал. |
Можно узнать имя файла, которое возвращается?
|
Команда
DIR *C* выдаст тебе все файлы которые содержат в себе букву "С". в независимости от того в каком месте в имени И расширении файла она находиться. |
так этот файл и возвращается 02bestUSD20031205. Остальные 18 такие же, только цифры другие.
В этом то и лажа |
:idontnow: Только что попробовал Вашу ситуацию (ос w2k, файлы как у Вас). Ничего странного не обнаружил. Давайте попробуем один "финт ушами": перенесите тот файл, который выдается в ответ на запрос, в другой каталог. И скомандуйте dir *c* ещё раз. Расскажите, что из этого выйдет.
|
Перенес в другой каталог на диск С: - результат тот же.
Попробовал экспериментировать с разными файлами. На другие файлы dir не реагирует. Например 02bestUSD20040519 не выбирается. А 02bestUSD20040430 выбирается постоянно. Задался вопросом - где может быть прописана буква С в этом файле. FAT? Структура каталога? Решил перенести файл на диск Y: - супер. Не выбирается. Соответственно вывод - dir *c* почему то реагировал на ПОЛНЫЙ путь файла. То есть для C:\TEMP\02bestUSD20040430 получается, что буква С есть. Но если выбирается только этот файл, то значит только для этого файла где--то прописался полный путь или что-то вроде этого. Дурдом. Как же теперь жить с этим глюком. У меня куча прог выбирает файлы из каталогов по DIR. Неужто придется все переписывать ... |
Вот ещё, что можно попробовать:
copy 02bestUSD20040430 02bestUSD20040430.cp del 02bestUSD20040430 copy 02bestUSD20040430.cp 02bestUSD20040430 del 02bestUSD20040430.cp А потом опять dir Добавлено: Обратите внимание: не move, а copy! |
Хlopec
Цитата:
[s]Исправлено: AlexDnepr, 15:50 20-05-2004[/s] |
hasherfrog
Попробовал. Не помогло :( AlexDnepr Так я попробовал не на диске С: - все ок. Но проблема не в том, чтобы файл не выбирался, а в том, что то ли команда dir неправильно работает, то ли глюк в файловой системе. Вот с этим бы разобраться.... |
Xlopec
Давайте ещё попробуем... copy 02bestUSD20040430 02bestUSD20040430.cp dir copy 02bestUSD20040430 02bestUSD2004043 dir copy 02bestUSD20040430 02bestUSD200404 dir copy 02bestUSD20040430 02bestUSD20040 dir ну и т.д. |
Весело тут у вас :). Простите, это не стеб, просто забавный случай...
|
hasherfrog
Так проблема вроде обнаружена. Если не использовать диск С:, то файлы не выбираются. |
:idontnow:
Как хотите... Мне интересно было не как решить проблему, а выяснить, почему она вообще возникла. |
Так мне тоже интересно знать про грабли в команде DIR. Кровно заинтересован. Я ж поэтому и говорю, что на других дисках все работает типа ок.
ОК. Сейчас прогоню копирование на диске С:. Посмотрим, что получится. Добавлено: Не-а. Не ведется. И на диске С: файлы не находятся. Хотя в исходном каталоге, где они живут, файлы по прежнему выбираются. Более того, их уже двое. А есть какой-то более радикальный способ. Например сам FAT посмотреть, что там написано. Чем можно посмотреть и куда? |
Так обрезанные имена файлов выбираются или нет?
|
Попробовал также посмотреть эту фишку. Проблема и правда есть. От диска не зависит, а вот от полного пути файла - да. Например, 02bestUSD20131205 выбираеться по разным полным путям (на диске D), а вот 02bestUSD20040430 только в некоторых. На дике С выбираються оба, а вот на О - ни один из них, на Диске К - опять же выбираються оба...
Добавлено: Кстати, попробуй заодно посмотреть с фильтром не по "с", а по "а" - у меня с ней тоже левые файла появляються...:confused: |
Greyman
Просвятите, откуда такие файлы вообще? Кто их генерит-то? Добавлено: Слушайте, а ну-ка дайте сюда весь листинг простым dir, без ключей. У Вас там в именах файлов нет случайно возврата каретки? |
hasherfrog
Откуда такие файлы у Xlopec я понятия не имею. Я просто создал файл 02bestUSD20040430, который у него выводился, а также зделал ряд аналогичных, заменяя по очереди цыфры в последнем числе на "1" (там где она уже была - заменил на "0"), и стал играться. Никакого возврата коретки у меня нет, создавал файл стандартными средствами просто введя такое имя. Играться быстро надоело, т.к. слишком большая вариативность результатов, а вот причину не ясна (кроме уже упомянутой зависимости от полного пути файла). Для меня однозначно только одно - это глюк именно мелкомяхких. Осталось только выяснить где он проявляеться (по ОСькам). Пока проверил на вин2к про SP2. Потом еще попробую на w98SE и wXP SP1, щас просто лень... Xlopec А какой у тебя SP стоит? |
Greyman
Ясно. Но у меня такого глюка нет (специально проверял на w2k, ещё в самом начале). PS. Идея с \n действительно глуповата, не проходит. Ляпнул, не подумав. |
Greyman
По dir *a* тоже файлы выбираются. Но другие 02bestUSD20040301 02bestUSD20040304 02bestUSD20040401 02bestUSD20040405 02bestUSD20040407 02bestUSD20040408 02bestUSD20040507 02bestUSD20040527 По dir *c* 02bestUSD20040430 02bestUSD20040519 Добавлено: hasherfrog Не кидайте в меня камнями, но в прошлый раз я по совету хешерфрога поигрался с копированием файлов - и у меня вообще ничего не выбиралось с каталога C:\TEMP\1 ... сегодня пришел с утра, загрузил комп, и вот решил попробовать еще немного разные варианты...это пис$^&ец. Глюк опять проявляется. Файлы выбираются и по dir *c* и по dir *a*...более того, при попытке изменения имен выбираемых фалов наблюдается интересный момент, если у файла 02bestUSD20040519 изменить последнюю девятку на другую цифру (например 02bestUSD20040510), то файл не выбирается! Попробовал пару букв (02bestUSD2004051q) - тоже не выбирается. Если убрать вообще девятку (02bestUSD2004051) - тоже не выбирается. А вот если добавлять к этому имени символы (02bestUSD20040519qwe), то файл выбирается. Радует, что хоть какая-то закономерность есть. Может от этого можно отталкиваться. Я например подозреваю, что проблема кроется в схеме записи имени файла в файловой таблице. 9-ка в имени файла является 17 символом в имени файла. Вот полез на winfaq.com.ru и посмотрел, как создаются длинные имена в винде...и офигел. "Как создаются длинные имена файлов (LFN)? Long File Names (Длинные Имена Файлов), создаются серией связанных данных. LFN использует один блок данных для псевдонима (псевдоним 8.3 создается автоматически) и следующую скрытую директорию для следующих 13 знаков имени. Так, если вы имеете файл с именем в 200 знаков, вы используете 17 блоков данных ! Псевдоним создается используя первые 6 знаков LFN, а потом идет знак ~ и цифра от 1 до 4. Например, для файла administr tools file.txt создаются файлы admini~1.txt admini~2.txt и так далее. После первых четырех версий файла, только 2 первых знака сохраняются, а остальные 6 генерируются: ad0E38~1.txt и так далее." Вот и решение всех проблем. Просто данные файлы, которые выбираются прописываются на диске в коротком исполнении с буквами с и а и т.д. ..Так что вывод следующий - НИКОГДА не использовать длинные имена на FATе, во избежание проблем. НИКОГДА не использовать в команде DIR звездочек. Это так - памятка себе :( |
Xlopec
Да, все верно, ключ /х это наглядно показывает... А вот ключа, заставляющего учитывать только длинный имена (или не учитывать короткие) мелкомяхкие не предусмотрели...:( Может где позже исправят (-ли)... |
Генерацию коротких 8.3-имён из длинных я проверил ключом /x в самом начале. Только я поленился создать больше 2-х файлов :) Кто ж знал, что
Цитата:
:rotate: SOLVED :rotate: |
Время: 15:30. |
Время: 15:30.
© OSzone.net 2001-