Показать полную графическую версию : Глючит DIR или так надо?
ОС Вин2К
есть список файлов из 19 файлов по маске 02bestUSD20031205.
Делаю DIR *c*, и у меня выбирается один из этих 19 файлов. Странно то что он вооще выбирается, хотя не должен, и особенно странно, что выбирается только один, а не все 19.
В чем может быть особенность? Есть подозрение, что глючит обработка символа "с" после звездочки.
ДОС в незапамятные времена все что после звездочки было игнорировал.
hasherfrog
17-05-2004, 12:20
Можно узнать имя файла, которое возвращается?
AlexDnepr
17-05-2004, 12:59
Команда
DIR *C*
выдаст тебе все файлы которые содержат в себе букву "С". в независимости от того в каком месте в имени И расширении файла она находиться.
так этот файл и возвращается 02bestUSD20031205. Остальные 18 такие же, только цифры другие.
В этом то и лажа
hasherfrog
19-05-2004, 10:21
:idontnow: Только что попробовал Вашу ситуацию (ос w2k, файлы как у Вас). Ничего странного не обнаружил. Давайте попробуем один "финт ушами": перенесите тот файл, который выдается в ответ на запрос, в другой каталог. И скомандуйте dir *c* ещё раз. Расскажите, что из этого выйдет.
Перенес в другой каталог на диск С: - результат тот же.
Попробовал экспериментировать с разными файлами. На другие файлы dir не реагирует. Например 02bestUSD20040519 не выбирается. А 02bestUSD20040430 выбирается постоянно. Задался вопросом - где может быть прописана буква С в этом файле. FAT? Структура каталога?
Решил перенести файл на диск Y: - супер. Не выбирается. Соответственно вывод - dir *c* почему то реагировал на ПОЛНЫЙ путь файла. То есть для C:\TEMP\02bestUSD20040430 получается, что буква С есть. Но если выбирается только этот файл, то значит только для этого файла где--то прописался полный путь или что-то вроде этого. Дурдом. Как же теперь жить с этим глюком. У меня куча прог выбирает файлы из каталогов по DIR. Неужто придется все переписывать ...
hasherfrog
20-05-2004, 10:28
Вот ещё, что можно попробовать:
copy 02bestUSD20040430 02bestUSD20040430.cp
del 02bestUSD20040430
copy 02bestUSD20040430.cp 02bestUSD20040430
del 02bestUSD20040430.cp
А потом опять dir
Добавлено:
Обратите внимание: не move, а copy!
AlexDnepr
20-05-2004, 14:48
Хlopec Неужто придется все переписывать ...
А как вариант перенести ТЕМР на другой диск?
Исправлено: AlexDnepr, 15:50 20-05-2004
hasherfrog
Попробовал. Не помогло :(
AlexDnepr
Так я попробовал не на диске С: - все ок. Но проблема не в том, чтобы файл не выбирался, а в том, что то ли команда dir неправильно работает, то ли глюк в файловой системе. Вот с этим бы разобраться....
hasherfrog
21-05-2004, 10:09
Xlopec
Давайте ещё попробуем...
copy 02bestUSD20040430 02bestUSD20040430.cp
dir
copy 02bestUSD20040430 02bestUSD2004043
dir
copy 02bestUSD20040430 02bestUSD200404
dir
copy 02bestUSD20040430 02bestUSD20040
dir
ну и т.д.
Prisoner
22-05-2004, 05:40
Весело тут у вас :). Простите, это не стеб, просто забавный случай...
hasherfrog
Так проблема вроде обнаружена. Если не использовать диск С:, то файлы не выбираются.
hasherfrog
28-05-2004, 08:33
:idontnow:
Как хотите... Мне интересно было не как решить проблему, а выяснить, почему она вообще возникла.
Так мне тоже интересно знать про грабли в команде DIR. Кровно заинтересован. Я ж поэтому и говорю, что на других дисках все работает типа ок.
ОК. Сейчас прогоню копирование на диске С:. Посмотрим, что получится.
Добавлено:
Не-а. Не ведется. И на диске С: файлы не находятся. Хотя в исходном каталоге, где они живут, файлы по прежнему выбираются. Более того, их уже двое.
А есть какой-то более радикальный способ. Например сам FAT посмотреть, что там написано. Чем можно посмотреть и куда?
hasherfrog
28-05-2004, 10:17
Так обрезанные имена файлов выбираются или нет?
Попробовал также посмотреть эту фишку. Проблема и правда есть. От диска не зависит, а вот от полного пути файла - да. Например, 02bestUSD20131205 выбираеться по разным полным путям (на диске D), а вот 02bestUSD20040430 только в некоторых. На дике С выбираються оба, а вот на О - ни один из них, на Диске К - опять же выбираються оба...
Добавлено:
Кстати, попробуй заодно посмотреть с фильтром не по "с", а по "а" - у меня с ней тоже левые файла появляються...:confused:
hasherfrog
28-05-2004, 12:24
Greyman
Просвятите, откуда такие файлы вообще? Кто их генерит-то?
Добавлено:
Слушайте, а ну-ка дайте сюда весь листинг простым dir, без ключей. У Вас там в именах файлов нет случайно возврата каретки?
hasherfrog
Откуда такие файлы у Xlopec я понятия не имею. Я просто создал файл
02bestUSD20040430, который у него выводился, а также зделал ряд аналогичных, заменяя по очереди цыфры в последнем числе на "1" (там где она уже была - заменил на "0"), и стал играться. Никакого возврата коретки у меня нет, создавал файл стандартными средствами просто введя такое имя. Играться быстро надоело, т.к. слишком большая вариативность результатов, а вот причину не ясна (кроме уже упомянутой зависимости от полного пути файла). Для меня однозначно только одно - это глюк именно мелкомяхких. Осталось только выяснить где он проявляеться (по ОСькам).
Пока проверил на вин2к про SP2. Потом еще попробую на w98SE и wXP SP1, щас просто лень...
Xlopec
А какой у тебя SP стоит?
hasherfrog
31-05-2004, 10:09
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 звездочек.
Это так - памятка себе :(
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.