Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows NT/2000/2003 (http://forum.oszone.net/forumdisplay.php?f=5)
-   -   Глючит DIR или так надо? (http://forum.oszone.net/showthread.php?t=2780)

hatexp 17-05-2004 10:53 15985

ОС Вин2К

есть список файлов из 19 файлов по маске 02bestUSD20031205.
Делаю DIR *c*, и у меня выбирается один из этих 19 файлов. Странно то что он вооще выбирается, хотя не должен, и особенно странно, что выбирается только один, а не все 19.
В чем может быть особенность? Есть подозрение, что глючит обработка символа "с" после звездочки.
ДОС в незапамятные времена все что после звездочки было игнорировал.

hasherfrog 17-05-2004 12:20 15986

Можно узнать имя файла, которое возвращается?

AlexDnepr 17-05-2004 12:59 15987

Команда
DIR *C*
выдаст тебе все файлы которые содержат в себе букву "С". в независимости от того в каком месте в имени И расширении файла она находиться.

hatexp 18-05-2004 10:20 15988

так этот файл и возвращается 02bestUSD20031205. Остальные 18 такие же, только цифры другие.
В этом то и лажа

hasherfrog 19-05-2004 10:21 15989

:idontnow: Только что попробовал Вашу ситуацию (ос w2k, файлы как у Вас). Ничего странного не обнаружил. Давайте попробуем один "финт ушами": перенесите тот файл, который выдается в ответ на запрос, в другой каталог. И скомандуйте dir *c* ещё раз. Расскажите, что из этого выйдет.

hatexp 20-05-2004 10:10 15990

Перенес в другой каталог на диск С: - результат тот же.
Попробовал экспериментировать с разными файлами. На другие файлы dir не реагирует. Например 02bestUSD20040519 не выбирается. А 02bestUSD20040430 выбирается постоянно. Задался вопросом - где может быть прописана буква С в этом файле. FAT? Структура каталога?
Решил перенести файл на диск Y: - супер. Не выбирается. Соответственно вывод - dir *c* почему то реагировал на ПОЛНЫЙ путь файла. То есть для C:\TEMP\02bestUSD20040430 получается, что буква С есть. Но если выбирается только этот файл, то значит только для этого файла где--то прописался полный путь или что-то вроде этого. Дурдом. Как же теперь жить с этим глюком. У меня куча прог выбирает файлы из каталогов по DIR. Неужто придется все переписывать ...

hasherfrog 20-05-2004 10:28 15991

Вот ещё, что можно попробовать:
copy 02bestUSD20040430 02bestUSD20040430.cp
del 02bestUSD20040430
copy 02bestUSD20040430.cp 02bestUSD20040430
del 02bestUSD20040430.cp
А потом опять dir

Добавлено:

Обратите внимание: не move, а copy!

AlexDnepr 20-05-2004 14:48 15992

Хlopec
Цитата:

Неужто придется все переписывать ...
А как вариант перенести ТЕМР на другой диск?

[s]Исправлено: AlexDnepr, 15:50 20-05-2004[/s]

hatexp 21-05-2004 09:52 15993

hasherfrog
Попробовал. Не помогло :(

AlexDnepr
Так я попробовал не на диске С: - все ок. Но проблема не в том, чтобы файл не выбирался, а в том, что то ли команда dir неправильно работает, то ли глюк в файловой системе. Вот с этим бы разобраться....

hasherfrog 21-05-2004 10:09 15994

Xlopec
Давайте ещё попробуем...
copy 02bestUSD20040430 02bestUSD20040430.cp
dir
copy 02bestUSD20040430 02bestUSD2004043
dir
copy 02bestUSD20040430 02bestUSD200404
dir
copy 02bestUSD20040430 02bestUSD20040
dir
ну и т.д.

Prisoner 22-05-2004 05:40 15995

Весело тут у вас :). Простите, это не стеб, просто забавный случай...

hatexp 27-05-2004 18:45 15996

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

hasherfrog 28-05-2004 08:33 15997

:idontnow:
Как хотите... Мне интересно было не как решить проблему, а выяснить, почему она вообще возникла.

hatexp 28-05-2004 10:03 15998

Так мне тоже интересно знать про грабли  в команде DIR. Кровно заинтересован. Я ж поэтому и говорю, что на других дисках все работает типа ок.

ОК. Сейчас прогоню копирование на диске С:. Посмотрим, что получится.


Добавлено:

Не-а. Не ведется. И на диске С: файлы не находятся. Хотя в исходном каталоге, где они живут, файлы по прежнему выбираются. Более того, их уже двое.

А есть какой-то более радикальный способ. Например сам FAT посмотреть, что там написано. Чем можно посмотреть и куда?

hasherfrog 28-05-2004 10:17 15999

Так обрезанные имена файлов выбираются или нет?

Greyman 28-05-2004 11:44 16000

Попробовал также посмотреть эту фишку. Проблема и правда есть. От диска не зависит, а вот от полного пути файла - да. Например,  02bestUSD20131205 выбираеться по разным полным путям (на диске D), а вот 02bestUSD20040430 только в некоторых. На дике С выбираються оба, а вот на О - ни один из них, на Диске К - опять же выбираються оба...

Добавлено:

Кстати, попробуй заодно посмотреть с фильтром не по "с", а по "а" - у меня с ней тоже левые файла появляються...:confused:

hasherfrog 28-05-2004 12:24 16001

Greyman
Просвятите, откуда такие файлы вообще? Кто их генерит-то?

Добавлено:

Слушайте, а ну-ка дайте сюда весь листинг простым dir, без ключей. У Вас там в именах файлов нет случайно возврата каретки?

Greyman 28-05-2004 20:43 16002

hasherfrog
Откуда такие файлы у Xlopec я понятия не имею. Я просто создал файл
02bestUSD20040430, который у него выводился, а также зделал ряд аналогичных, заменяя по очереди цыфры в последнем числе на "1" (там где она уже была - заменил на "0"), и стал играться. Никакого возврата коретки у меня нет, создавал файл стандартными средствами просто введя такое имя. Играться быстро надоело, т.к. слишком большая вариативность результатов, а вот причину не ясна (кроме уже упомянутой зависимости от полного пути файла). Для меня однозначно только одно - это глюк именно мелкомяхких. Осталось только выяснить где он проявляеться (по ОСькам).
Пока проверил на вин2к про SP2. Потом еще попробую на w98SE и wXP SP1, щас просто лень...

Xlopec
А какой у тебя SP стоит?

hasherfrog 31-05-2004 10:09 16003

Greyman
Ясно. Но у меня такого глюка нет (специально проверял на w2k, ещё в самом начале).
PS. Идея с \n действительно глуповата, не проходит. Ляпнул, не подумав.

hatexp 01-06-2004 09:57 16004

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 звездочек.
Это так - памятка себе :(

Greyman 01-06-2004 15:21 16005

Xlopec
Да, все верно, ключ /х это наглядно показывает...  А вот ключа, заставляющего учитывать только длинный имена (или не учитывать короткие) мелкомяхкие не предусмотрели...:( Может где позже исправят (-ли)...

hasherfrog 02-06-2004 09:13 16006

Генерацию коротких 8.3-имён из длинных я проверил ключом /x в самом начале. Только я поленился создать больше 2-х файлов :) Кто ж знал, что
Цитата:

После первых четырех версий файла...
Вот так вот. Очень рад, что всё прояснилось, заодно спасибо за доп. информацию о генерации коротких имён. Я давно хотел найти описание этого процесса, но опять-же лень+склероз. Ну, можно считать, что проблема...

:rotate: SOLVED :rotate:


Время: 15:30.

Время: 15:30.
© OSzone.net 2001-