On-line: NickSam, гостей 0. Всего: 1 [подробнее..]
АвторСообщение



Пост N: 673
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 31.10.23 14:07. Заголовок: путь+имя файла больше 259


Длина путь+имя файла больше 259. Каким образом можно переименовать такой файл ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 11 [только новые]


постоянный участник




Пост N: 4440
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.10.23 14:21. Заголовок: fil пишет Каким обра..


fil пишет
 цитата:
Каким образом можно переименовать такой файл ?


через dbf (заменяем RecNo), массив (номер элемента), hash (позиция) и т.д.
cKey := hb_Crc32(...) // использовал когда то на ключи вместо наименования в небольшой базе

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 674
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 31.10.23 14:33. Заголовок: Не понял. Нельзя ли ..


Не понял. Нельзя ли поподробнее ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 675
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 31.10.23 14:44. Заголовок: Так, есть файл на ди..


Так.. есть файл на диске. Мне его надо переименовать (название сократить). Причем здесь dbf и ключи ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост 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)

Используем таблицу перекодировки, потом ее можете давать в просмотр и выбор файла для работы

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 676
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 31.10.23 14:51. Заголовок: само изменение разме..


само изменение размера файла это hb_HPos(a, cFileLong) ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост 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 )

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 677
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 31.10.23 15:09. Заголовок: Т.е. мы сам файл в м..


Т.е. мы сам файл в массив побитно кладем ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4443
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.10.23 15:10. Заголовок: fil пишет Мне его на..


fil пишет
 цитата:
Мне его надо переименовать (название сократить). Причем здесь dbf и ключи ?


Если это разовая операция, то достаточно новое имя сделать
cFile := Dtos(Date())+"_"+StrTran(hb_ntos(Seconds()), ".", "")+cExt
Если потом надо работать с этими файлами, то делаем таблицы перекодировок для файлов, как выше показано
<старое название> -> <новое название>

 цитата:
Т.е. мы сам файл в массив побитно кладем ?


оперируем именами файлов

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 678
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 31.10.23 15:16. Заголовок: Это все прекрасно, т..


Это все прекрасно, только файлы "путь+имя файла больше 259" так не переименовать. Это админы задание выдали ибо при резервном копировании такие файлы прпопускаюися

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4444
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.10.23 15:23. Заголовок: т.е. hb_vfRename( &#..


т.е. hb_vfRename( <cFileSrc>, <cFileDst> ) даст .F. и hb не видит их.
тогда что работает, как файлы появились, чем читаются, обрабатываются ?
PS
тогда админы должны дать системную утилиту для переименования и исп. ее и таблицы перекодировки, все утилитой переименовать для архива и восстанавливать после из архива

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 679
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 31.10.23 15:52. Заголовок: Победил. Банально RE..


Победил. Банально REN через CMD (тока чтоб он не мелькал надо в WScript обернуть)

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 260
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет