Re: не могу скопировать файлы командой COPY FILE | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
(Кстати, SYS(2000, маска [,1]) ищет по маске, почти ADIR. Возвращает первое/очередное имя файла. Не проверял регистрозависимость возвращенного имени, но истиное имя можно получить GetShortPathName + GetLongPathName: forum.foxclub.ru)
|
Re: не могу скопировать файлы командой COPY FILE | |
---|---|
Chips Автор Сообщений: 93 Дата регистрации: 11.02.2016 |
Хорошо, допустим API скопировала файлы не изменив регистр, а переименовать как ?
Не fld3, а fild3. Fild - поле(анг.) Какая разница что за запрос, главное что в результате я получаю курсор с цифровой частью имени файла.
Получилось прилепить. Видимо я первый раз спешил и сделал что-то не то, фокс ругнулся и я не стал копать, так как юзверы требовали исполнения поставленной задачи в кротчайшие сроки. Ну теперь получается можно переписать под FSO и убрать "STRTOFILE(FILETOSTR(". БОЛЬШОЕ СПАСИБО. |
Re: не могу скопировать файлы командой COPY FILE | |
---|---|
Влад Колосов Сообщений: 22664 Откуда: Ростов-на-Дону Дата регистрации: 05.05.2005 |
Поле - это Field ;)
------------------ Совершенство - это не тогда, когда нельзя ничего прибавить, а тогда, когда нечего убавить. |
Re: не могу скопировать файлы командой COPY FILE | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> А почему не копировать API: CopyFile(S,S,I) (FilNam, lpNewFileName, bFailIfExists) ? API ф-ия не должна менять регистр в имени файла, наверное...
>> Хорошо, допустим API скопировала файлы не изменив регистр, а переименовать как ? имя1 (FilNam) --> имя2 (lpNewFileName) - это разве не переименование? А исходный файл (имя1) можно удалить... Если новые имена пересекаются с уже имеющимися, то можно через промежуточный каталог копировать... > Не fld3, а fild3. Fild - поле(анг.) Какая разница что за запрос, главное что в результате я получаю курсор с цифровой частью имени файла. Буду знать про Fild (анг.) "в результате я получаю курсор с цифровой частью имени файла" - это, вероятно, означает, что fld3="цифровой частью имени файла" надо вставить в исходное имя файла вместо первой или второй числовой части имени? Я угадал? |
Re: не могу скопировать файлы командой COPY FILE | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
MoveFile Кроме того, апи функция CopyFile при указании имени файла в качестве источника, требует указания имени ФАЙЛА в качестве назначения - она не копирует "файл в папку" - так что уж что что, а задать новое имя для копируемого файла не составляет никакого труда. ------------------ WBR, Igor |
Re: не могу скопировать файлы командой COPY FILE | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
(это ужастно, несчастные 14 тыс. файлов, какой ужас, не смог переименовать... И куда полетят наши космолеты, запрограммированные аналогичными товарищами?... Да... Туда ) )
|
Re: не могу скопировать файлы командой COPY FILE | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Если я правильно понял вышеприведенное описание, задача не совсем тривиальная таки получается. А из-за того, что переименование идет по неопределенной маске, точнее задаваемой через курсор, в один этап похоже не решается. Требуя разбивки на два: 1) копирование файлов по маске из курсора путем простого перебора его записей через сканирование, 2) переименование скопированных файлов. Но поскольку при копировании используется маска, второй этап не получится вставить в тот же самый перебор записей курсора, а проще всего мне кажется сделать перебор уже скопированных файлов с поиском нужного переименования в том же курсоре. Т.е. навскидку вот так как-то можно сделать:
Код в принципе уже рабочий, проверил ради интереса на приведенных именах файлов и каталогов. Хотя можно при желании конечно и еще подумать над ним, подкорректировав в ту или иную сторону. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) Исправлено 8 раз(а). Последнее : Crispy, 10.08.16 07:28 |
Re: не могу скопировать файлы командой COPY FILE | |
---|---|
sphinx Сообщений: 31188 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Как в сторону улучшений, так и в сторону ухудшений? ------------------ "Veni, vidi, vici!"(с) |
Re: не могу скопировать файлы командой COPY FILE | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Ну дык.
------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: не могу скопировать файлы командой COPY FILE | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Тривиальная. Решается за 1 проход по курсору и всего одно копирование на каждый нужный файл (сразу же с его переименованием). Искать файл можно разными способами - можно сначала сделать гигантский ADIR на все файлы, и потом в нём уже многокнатно искать - есть "подходящий" файл или нет - если есть, то копировать с новым именем. Но мне кажется проще делать на каждую запись свой "мелкий" ADIR - где по логике автора темы будет всего 1 элемент (или не будет вообще ничего) - и его уже копировать с новым именем в новую папку. Если же он умолчал/не подумал о нюансах типа "неуникальных" файлов вида ab-003-034.txt cD-003-034.txt Ef-003-034.txt ну тогда внутри этого цикла ещё потребуется цикл по "строкам" ADIR - или, возможно, копировать нужно только первый попавшийся из "однономерных" ------------------ WBR, Igor |
Re: не могу скопировать файлы командой COPY FILE | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Много чего возможно, было бы желание.
------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: не могу скопировать файлы командой COPY FILE | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Много чего желанно, была бы возможность. (приписывается спинзаю)
|
Re: не могу скопировать файлы командой COPY FILE | |
---|---|
Chips Автор Сообщений: 93 Дата регистрации: 11.02.2016 |
Летят они куда надо, ибо программирую их не я! Хотелось бы взглянуть на ваши коды и определить в какую сторону полетит ваш космолёт.
Спасибо Crispy, в конечном итоге я так и сделал. Исправлено 2 раз(а). Последнее : Chips, 11.08.16 17:37 |
Re: не могу скопировать файлы командой COPY FILE | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Так тов. Crispy код написал... Хотя строковые операции в фоксе подсказали уже давно (STUFF), в хелпе можно подобрать аналогичные, типа AT, GETWORDNUM (чтобы вычислить положение тире в имени, а не привязываться к фиксированному положению заменяемого 8,3), получить имя с сохранением регистра - FSO, или API, тоже подсказали, изменить имя - те же функции, файлы запрограммировали не Вы. Вроде исходные материалы все были даны. Еще моего кода не хватает ?
|
Re: не могу скопировать файлы командой COPY FILE | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
И очень зря. Такой код потенциально будет перемешивать файлы - если вдруг "новый номер" пересечётся с уже существующим. Ну т.е. если сначала ты скопируешь aa-001-001.txt aa-001-002.txt Без изменения имени, а потом начнёшь "переименовывать" их в, к примеру, aa-001-001.txt -> aa-001-002.txt aa-001-002.txt -> aa-001-001.txt Первое же переименование сломается, т.к. такой файл уже есть, но он ещё не переименован При копировании сразу с новым именем такой проблемы не возникнет - будет лишь проблема уникальности - если вдруг по "таблице переименования" потребуется сделать странное: aa-001-001.txt -> aa-001-005.txt aa-001-002.txt -> aa-001-005.txt aa-001-003.txt -> aa-001-005.txt ------------------ WBR, Igor |
Re: не могу скопировать файлы командой COPY FILE | |
---|---|
birchoko Сообщений: 1 Дата регистрации: 21.01.2018 |
если тебе нужно скопировать все файлы из одной папки в другую...
1. Упакуй архиватором все файлы в папку c:\#\ из папки c:\youprg\temp\*.* {Run /N rar.exe a -ep c:\#\arh c:\youprg\temp\*.*} 2. скопируй архив из папки c:\#\arh.rar куда надо... (файлы, если их много, быстрее копируются одним архивным файлом) {COPY FILE c:\#\arh.rar to d:\#\arh.rar} 3. если надо распакуй... {Run /N rar e -Y c:\#\arh.rar d:\#\} P.S. в корне программы,откуда запускаешь программу, должен быть файл "c:\youprg\rar.exe" |
Re: не могу скопировать файлы командой COPY FILE | |
---|---|
medstrах Сообщений: 1810 Дата регистрации: 10.06.2019 |
Потрясающе!
Спасибо. СПАСИБО! |
Re: не могу скопировать файлы командой COPY FILE | |
---|---|
Перминов Игорь Сообщений: 1591 Откуда: Красная Орловка Дата регистрации: 16.09.2001 |
Код взят с нашего форума (очень давно) - автор не я:
------------------ Без коментариев.. |
© 2000-2024 Fox Club  |