Автор | Сообщение |
|
| |
Пост N: 673
Зарегистрирован: 17.06.10
|
|
Отправлено: 31.10.23 14:07. Заголовок: путь+имя файла больше 259
Длина путь+имя файла больше 259. Каким образом можно переименовать такой файл ?
|
|
|
Ответов - 11
[только новые]
|
|
|
| постоянный участник
|
Пост N: 4440
Зарегистрирован: 17.02.12
|
|
Отправлено: 31.10.23 14:21. Заголовок: fil пишет Каким обра..
fil пишет цитата: | Каким образом можно переименовать такой файл ? |
| через dbf (заменяем RecNo), массив (номер элемента), hash (позиция) и т.д. cKey := hb_Crc32(...) // использовал когда то на ключи вместо наименования в небольшой базе
|
|
|
|
| |
Пост N: 674
Зарегистрирован: 17.06.10
|
|
Отправлено: 31.10.23 14:33. Заголовок: Не понял. Нельзя ли ..
Не понял. Нельзя ли поподробнее ?
|
|
|
|
| |
Пост N: 675
Зарегистрирован: 17.06.10
|
|
Отправлено: 31.10.23 14:44. Заголовок: Так, есть файл на ди..
Так.. есть файл на диске. Мне его надо переименовать (название сократить). Причем здесь dbf и ключи ?
|
|
|
|
| постоянный участник
|
Пост N: 4441
Зарегистрирован: 17.02.12
|
|
Отправлено: 31.10.23 14:45. Заголовок: 1. use FileList dbAp..
1. use FileList dbAppend() REPL FileNM with cFileName1 dbAppend() REPL FileNM with cFileName2 ... INDEX ON FileNM TAG NAM use n := 0 use FileList IF dbSeek(cFileLong) ; n := RecNo() ENDIF use cFile := strzero(n, 7) 2. а := {} AAdd(a, cFileName1) AAdd(a, cFileName2) ... n := ascan(a, cFileLong) cFile := strzero(n, 7) 3. a := hb_hash() hb_HSet(a, cFileName1, cFileName1) hb_HSet(a, cFileName2, cFileName2) ... n := hb_HPos(a, cFileLong) cFile := strzero(h, 7) Используем таблицу перекодировки, потом ее можете давать в просмотр и выбор файла для работы
|
|
|
|
| |
Пост N: 676
Зарегистрирован: 17.06.10
|
|
Отправлено: 31.10.23 14:51. Заголовок: само изменение разме..
само изменение размера файла это hb_HPos(a, cFileLong) ?
|
|
|
|
| постоянный участник
|
Пост N: 4442
Зарегистрирован: 17.02.12
|
|
Отправлено: 31.10.23 15:01. Заголовок: fil пишет само измен..
fil пишет цитата: | само изменение размера файла это hb_HPos(a, cFileLong) ? |
| a - это hash cFileLong - имя файла с путем длинное т.е. ищем в hash, если нашли, то n - позиция ключа в hash если не нашли, добавляем файл в hash и снова делаем n := hb_HPos(...). тут вопросик, возможна ли смена позиции ? надо проверить и если да, то делать к ключу (длинное имя) значение STATC s_nHCount счетчика для hash s_nHCount ++ hb_HSet(a, cFileName1, s_nHCount) тогда берем значение на найденный ключ, а не позицию, т.е. n := hb_HGetDef(a, cFileLong, 0) cFile := strzero(n, 7) PS вместо STATIC счетчика новое имя можно делать hb_HSet( a, cFileName1, Dtos(Date())+"_"+StrTran(hb_ntos(Seconds()), ".", "")+cExt )
|
|
|
|
| |
Пост N: 677
Зарегистрирован: 17.06.10
|
|
Отправлено: 31.10.23 15:09. Заголовок: Т.е. мы сам файл в м..
Т.е. мы сам файл в массив побитно кладем ?
|
|
|
|
| постоянный участник
|
Пост N: 4443
Зарегистрирован: 17.02.12
|
|
Отправлено: 31.10.23 15:10. Заголовок: fil пишет Мне его на..
fil пишет цитата: | Мне его надо переименовать (название сократить). Причем здесь dbf и ключи ? |
| Если это разовая операция, то достаточно новое имя сделать cFile := Dtos(Date())+"_"+StrTran(hb_ntos(Seconds()), ".", "")+cExt Если потом надо работать с этими файлами, то делаем таблицы перекодировок для файлов, как выше показано <старое название> -> <новое название> цитата: | Т.е. мы сам файл в массив побитно кладем ? |
| оперируем именами файлов
|
|
|
|
| |
Пост N: 678
Зарегистрирован: 17.06.10
|
|
Отправлено: 31.10.23 15:16. Заголовок: Это все прекрасно, т..
Это все прекрасно, только файлы "путь+имя файла больше 259" так не переименовать. Это админы задание выдали ибо при резервном копировании такие файлы прпопускаюися
|
|
|
|
| постоянный участник
|
Пост N: 4444
Зарегистрирован: 17.02.12
|
|
Отправлено: 31.10.23 15:23. Заголовок: т.е. hb_vfRename( ..
т.е. hb_vfRename( <cFileSrc>, <cFileDst> ) даст .F. и hb не видит их. тогда что работает, как файлы появились, чем читаются, обрабатываются ? PS тогда админы должны дать системную утилиту для переименования и исп. ее и таблицы перекодировки, все утилитой переименовать для архива и восстанавливать после из архива
|
|
|
|
| |
Пост N: 679
Зарегистрирован: 17.06.10
|
|
Отправлено: 31.10.23 15:52. Заголовок: Победил. Банально RE..
Победил. Банально REN через CMD (тока чтоб он не мелькал надо в WScript обернуть)
|
|
|
|