|
Банальный вопрос - как переместить каталог, содержащий файлы и каталоги? | ☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
24.01.22
✎
12:21
|
Вызов ПереместитьФайл выдает ошибку:
Ошибка при вызове метода контекста (ПереместитьФайл) ПереместитьФайл(СтараяПолнаяПапкаФайловПроекта, НоваяПолнаяПапкаФайловПроекта); по причине: Ошибка переименования файлов по причине: Неправильный путь к файлу 'D:\2020'. Объект является каталогом Нет такой функции сработает и только Shell дергать? Не, ну можно через создание каталогов, перемещение файлов и потом создание каталогов сделать, но блин... Может есть какой метод? Может в БСП можно найтить? |
|||
1
pechkin
24.01.22
✎
12:22
|
Переименовать каталог может быть попробовать?
|
|||
2
Dotoshin
24.01.22
✎
12:28
|
||||
3
Гений 1С
гуру
24.01.22
✎
12:51
|
(2) пока ждал ответ, так и наваял, но получаю ошибку:
йМодуль.дор_Сервер.Модуль(1016)}: Ошибка при вызове метода контекста (MoveFolder) FSO.MoveFolder(Источник, Приемник); //D:\ПРОЕКТ\ Произошла исключительная ситуация (0x800a004c) Код: Процедура ПереместитьКаталогFSO(Источник, Приемник) Экспорт FSO = Новый COMОбъект("Scripting.FileSystemObject"); Если FSO.FolderExists(Источник) Тогда Сообщить("Есть папка"); Иначе Сообщить("Папки нет"); КонецЕсли; FSO.MoveFolder(Источник, Приемник); //D:\ПРОЕКТ КонецПроцедуры Причем пишет, что папка есть, а переместить не может. Ошибка гуглится как "не найден путь", но путь то найден... |
|||
4
Гений 1С
гуру
24.01.22
✎
12:54
|
Хотя возможно это потому что я не так записываю каталоги
у меня условно источник: D:\Проекты\1 Приемник: D:\Проекты\2 Возможно, нужно приемник поменять на: D:\Проекты |
|||
5
Гений 1С
гуру
24.01.22
✎
13:30
|
В общем он не работает с вложенными папками.
т.е. так не сработает, если папка 2 не создана и не является финальной: источник: D:\Проекты\1\А\Х Приемник: D:\Проекты\2\А\Х Т.е. по сути мне надо переименовать папку 1 в папку 2. Ну т.е. это не совсем перемещение. В итоге работает вот такой код: Процедура ПереместитьКаталогFSO(Источник, Приемник) Экспорт //Источник, приемник - строго без финальных слешей FSO = Новый COMОбъект("Scripting.FileSystemObject"); //Если FSO.FolderExists(Источник) Тогда // Сообщить("Есть папка"); //Иначе // Сообщить("Папки нет"); //КонецЕсли; Файлы = НайтиФайлы(Источник, "*.*", ложь); СоздатьКаталог(Приемник); Для Каждого Файл ИЗ Файлы Цикл FSO.MoveFolder(Источник + "\" + Файл.Имя, Приемник + "\" + Файл.Имя); КонецЦикла; КонецПроцедуры |
|||
6
Ненавижу 1С
гуру
25.01.22
✎
00:57
|
(5) это называется переименовать
objFSO = Новый COMОбъект("Scripting.FileSystemObject"); objFolder = objFSO.GetFolder("C:\_1"); objFolder.Name = "_21"; |
|||
7
Гений 1С
гуру
25.01.22
✎
08:00
|
(6) нет, не переименовать, нужно именно переместить. посмотри внимательнее.
|
|||
8
Гений 1С
гуру
25.01.22
✎
08:01
|
ибо там могут быт еще и другие папки, которые перемещать не нужно.
Пример папок: Иванов\Проект1 Иванов\Проект2 Петров\Проект3 Петров\Проект4 Если мы передаем проект2 Петрову, нужно чтобы стало так: Иванов\Проект1 Петров\Проект2 Петров\Проект3 Петров\Проект4 Т.е. папка Иванов должна остаться. ОК? |
|||
9
Leonardo1c
25.01.22
✎
12:23
|
Создать структуру каталогов и переместить в них файлы. Это задача уровня информатики 9 класса ))
|
|||
10
Гений 1С
гуру
25.01.22
✎
13:28
|
(9) вот потому мне и не хочется ею заниматься, оставил на откуп FS, код в (5) реализован
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |