Страница: 1 | 2 | 3 |
Вопрос: Как создать путь, длинее 220 символов?
Добавлено: 26.05.07 13:36
Автор вопроса: Леша | ICQ: 362231326
Ответы
Всего ответов: 31
Номер ответа: 16
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #16
Добавлено: 28.05.07 10:38
Номер ответа: 17
Автор ответа:
Леша
ICQ: 362231326
Вопросов: 9
Ответов: 76
Профиль | | #17
Добавлено: 28.05.07 11:45
ну так а как создать путь вида \\CompName\D:\? хотя б короче 260 символов?
Номер ответа: 18
Автор ответа:
Pashenko
ICQ: 176176951
Вопросов: 14
Ответов: 655
Профиль | | #18
Добавлено: 28.05.07 12:24
Народ, что-то вы гоните...
Бывают ли такие пути: \\CompName\D:\?
Наверное, \\CompName\D$\?
Номер ответа: 19
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #19
Добавлено: 28.05.07 12:25
copy C:\afasd.txt \\?\C:\1.t?xt..
результат = \\?\C:\1.txxt..
copy C:\afasd.txt \\?\C:\1.t*xt..
результат = предлагает заменить \\?\C:\1.txt..
copy C:\afasd.txt \\?\C:\1.t/xt..
ошибка в синтаксисе команды
copy C:\afasd.txt \\?\C:\1.t\xt..
Системе не удается найти указанный путь.
copy C:\afasd.txt \\?\C:\1.t:xt..
Синтаксическая ошибка в имени файла, имени папки или метке тома.
< и > - перенаправление ввода/вывода, еще раз в этом убедился когда в папке Documents And Settings появился файл xt
| разделитель команд в ДОСе, т.ч. ругалась что нет команды xt..
Номер ответа: 20
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #20
Добавлено: 28.05.07 12:26
Причем здесь CompName?
Надо писать именно так: \\?\C:\имя_файла
Номер ответа: 21
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #21
Добавлено: 28.05.07 13:01
Ограничена не длина имени файла, а длина самого пути. Вообще следует избегать имён файлов и папок длиной более 12 символов (8 на имя, 3 на расширение плюс разделитель), несмотря на поддержку таковых современными ОС.
Номер ответа: 22
Автор ответа:
Леша
ICQ: 362231326
Вопросов: 9
Ответов: 76
Профиль | | #22
Добавлено: 28.05.07 13:55
Надо писать именно так: \\?\C:\имя_файла
чесно скказать я думал что это наподобе сетевого пути. &
ИМЕННО! создать путь длиннее 260 символов нельзя!
Номер ответа: 23
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #23
Добавлено: 28.05.07 14:23
Блин. Не получается у меня больше ~260 символов создать имя файла.
Кто говорил что имя может до 65к быть? Пример в студию
Номер ответа: 24
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #24
Добавлено: 28.05.07 14:55
Номер ответа: 25
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #25
Добавлено: 28.05.07 15:22
я имел в виду утверждение Sharp
Sharp, либо ты ошибаешься, либо... как создать имя файла больше 260 символов?
Может быть это возможно на NTFS, но на FAT32 всеми известными мне способами у меня не получилось это сделать.
А по теме вопроса, так лучше сделать БД (базу, инюшник, текстовик и т.п.), которая содержит соответствия имя_файла (реального файла, который на диске)=описание (в виде полных имен файлов неограниченной длинны, если угодно)
Как предлагал это сделать Arseny (а если и не так, то он меня на мысль навел)
Номер ответа: 26
Автор ответа:
Леша
ICQ: 362231326
Вопросов: 9
Ответов: 76
Профиль | | #26
Добавлено: 28.05.07 15:54
у меня NTFS - без разницы. нельзя!
Как предлагал это сделать Arseny (а если и не так, то он меня на мысль навел)
можно и так, а можно по алгоритму какому то вычислять имя нужной папки или файла в процессе работы программы.Я наверное так и сделаю
Номер ответа: 27
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #27
Добавлено: 28.05.07 15:58
2ZagZag: Ты совсем запарился: ведь ясно же сказано длина ПУТИ, а не имени файла. Степень вложенности каталогов-то разной быть может.
Номер ответа: 28
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #28
Добавлено: 28.05.07 17:09
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#include <string.h>
int wmain() {
wchar_t *longpath = (wchar_t *) GlobalAlloc(GPTR, 1000000);
wcscpy(longpath,L"\\\\?\\C:\\"
const wchar_t next[] = L"LONGLONGLONG\\";
int pathsize = wcslen(longpath);
int nextsize = wcslen(next);
const int maxpath = 1000000;
wcscat(longpath, next);
while (pathsize < maxpath && CreateDirectory(longpath, NULL)) {
pathsize += nextsize;
wprintf(L"Path size: %u\n", pathsize);
wcscat(longpath, next);
}
wprintf(L"\nDone."
GlobalFree(longpath);
return 0;
}
Номер ответа: 29
Автор ответа:
Леша
ICQ: 362231326
Вопросов: 9
Ответов: 76
Профиль | | #29
Добавлено: 28.05.07 19:16
круто! Нам до такого еще расти и расти
Номер ответа: 30
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #30
Добавлено: 29.05.07 13:19
да ладно, все понятно
только это совершенно не нужно, поскольку не может быть нормально использовано. и не экономично, и не оптимизированно, извращение короче.
настолько же глупо вбить в любой exe-шник пару миллионов знаков. ну ничего не измениццо.