![]() |
|
v7: Как перенести по простому папку? | ☑ | ||
---|---|---|---|---|
0
РусскийВедун
05.12.18
✎
14:46
|
Есть функция ПереименоватьФайл, которая переносит файл, но как перенести папку? Такой функции не нашел. Мало того, как узнать какие папки есть внутри этой папки, чтобы создать в новом месте такую же иерархию папок, а в исходном месте - тогда удалятькаталог (благо такая функция есть).
|
|||
1
Карст
05.12.18
✎
14:49
|
http://www.cyberforum.ru/cmd-bat/thread501754.html
+ командасистемы |
|||
2
Kigo_Kigo
05.12.18
✎
14:53
|
ПереименоватьФайл -> которая переносит файл
Однако |
|||
3
РусскийВедун
05.12.18
✎
15:33
|
В-общем все скопировал, а удалить никак каталог не получается. Пишет ошибка.
Функция ЭтоКаталог(ИмяФайла) Перем Размер, Атрибуты, Создан, Доступ, Запись, РасшИмяФайла; Рез = 0; ФС.АтрибутыФайла(ИмяФайла, Размер, Атрибуты, Создан, Доступ, Запись, РасшИмяФайла); Если Сред(Атрибуты,4,1) = "1" Тогда Рез = 1; КонецЕсли; Возврат Рез; КонецФункции процедура КопироватьФайлы(ПутьОткуда,ПутьКуда) ФС_ = СоздатьОбъект("ФС"); Если (ФС_.СуществуетФайл(путькуда) = 0) Тогда ФС_.СоздатьКаталог(ПутьКуда); КонецЕсли; ИмяФайла = ФС_.НайтиПервыйФайл(ПутьОткуда+"\*.*"); Пока ПустаяСтрока(ИмяФайла) = 0 Цикл Если (ИмяФайла <> ".") И (ИмяФайла <> "..") Тогда Если ЭтоКаталог(ПутьОткуда+"\"+ИмяФайла) = 1 Тогда ПодКаталогОткуда = ПутьОткуда + "\"+ИмяФайла; ПодКаталогКуда = ПутьКуда + "\"+ИмяФайла; // Проверим наличие подкаталога в папке ПутьКуда // - если его нет, создадим Если (ФС_.СуществуетФайл(ПодКаталогКуда) = 0) ИЛИ (ЭтоКаталог(ПодКаталогКуда) = 0) Тогда ФС_.СоздатьКаталог(ПодКаталогКуда); КонецЕсли; КопироватьФайлы(ПодКаталогОткуда,ПодКаталогКуда); Иначе Поз = Найти(ИмяФайла,"."); //Расш = Нрег(?(Поз>0,Сред(ИмяФайла,Поз+1),"")); //Если Расш <> Нрег(Расширение) Тогда // ИмяФайла = ФС_.НайтиСледующийФайл(); // Продолжить; //КонецЕсли; ИмяФайлаИсточника = ПутьОткуда + "\" + ИмяФайла; ИмяФайлаПриемника = ПутьКуда + "\" + ИмяФайла; ФС_.КопироватьФайл(ИмяФайлаИсточника,ИмяФайлаПриемника,0); // Копируем с перзаписью КонецЕсли; КонецЕсли; ИмяФайла = ФС_.НайтиСледующийФайл(); КонецЦикла; конецпроцедуры а сам вызов ПутьОткуда=сокрлп(константа.путь)+"\"; ПутьКуда=сокрлп(константа.путь2)+"\"; попытка копироватьфайлы(ПутьОткуда,ПутьКуда); исключение сообщить(описаниеошибки()); конецпопытки; ФС0 = СоздатьОбъект("ФС"); попытка ФС0.удалитькаталог(ПутьОткуда); исключение сообщить(описаниеошибки()); конецпопытки; В каталоге который хочу удалить никого нету. Почему не удаляет? Пишет Ошибка при выполнении команды; и все |
|||
4
Масянька
05.12.18
✎
15:38
|
(3) Потому что каталог занят эской.
Прикол семерки. А может и в восьмерке такое есть. |
|||
5
РусскийВедун
05.12.18
✎
15:38
|
(4) проводник без проблем удаляет
|
|||
6
Масянька
05.12.18
✎
15:39
|
(5) Открой этот каталог в эске. Закрой. А потом попробуй удалить проводником (эску не закрывать!).
|
|||
7
РусскийВедун
05.12.18
✎
15:46
|
(6) Удаляет. Или как именно сделать открыть закрыть?
|
|||
8
Масянька
05.12.18
✎
15:51
|
(7) Слегка попутала.
Если в каталоге открыть файл, закрыть. То потом пока эску не закроешь каталог не удалится. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |