Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 690
1

Переместить папку(каталог). Ошибка "File already exists"

22.09.2020, 16:11. Показов 4465. Ответов 9

Author24 — интернет-сервис помощи студентам
Пробую выполнить перемещение папки.
Результат: ошибка "File already exists"

Код
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub CopyFolder_btn_Click()
            Dim sourcePath As String                                                                                                            ' путь к папке источнику
            Dim destinationPath As String                                                                                                   ' путь к папке получателю
            Dim fso As Object                                                                                                                          ' Объект FSO (File System Object)
            
            sourcePath = "c:\test\Access\copyFolder\p01\FolderTest\Source"                                  ' Источник
            destinationPath = "c:\test\Access\copyFolder\p01\FolderTestForCopy"                         ' Получатель
            
            Set fso = CreateObject("Scripting.FileSystemObject") ' Объект FSO (File System Object) (Присваиваем переменной fso ссылку на новый экземпляр FileSystemObject)
        
              fso.MoveFolder sourcePath, destinationPath                                                                          ' перемещаем `папку`
            Set fso = Nothing
End Sub
Миниатюры
Переместить папку(каталог). Ошибка "File already exists"   Переместить папку(каталог). Ошибка "File already exists"   Переместить папку(каталог). Ошибка "File already exists"  

Вложения
Тип файла: zip MoveFolder.zip (37.7 Кб, 1 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2020, 16:11
Ответы с готовыми решениями:

The File Exists ошибка в VS
При попытке просто добавить форму, долго думает, выводит ошибку с этим сообщением (The File...

Unable to load file Build/Downloads.framework.js! Check that the file exists on the remote server
Загружаю webGl игру в качестве zip архива с html файлом на itch io.Но выходит такая вот ошибочка...

Ошибка Warning: mkdir() [function.mkdir]: File exists
Подскажите в чем ошибка? Выводит ошибку Warning: mkdir() : File exists if...

Как переместить папку с её содержимым в другую папку по пути?
string oldPath = $@"D:\БИП\Курс 4\Диплом Антона\Учёт Школьных Услуг\Учёт Школьных...

9
Заблокирован
22.09.2020, 17:33 2
Лучший ответ Сообщение было отмечено Soft17 как решение

Решение

Цитата Сообщение от Soft17 Посмотреть сообщение
Результат: ошибка "File already exists"
... а тут наоборот нужен слешь у DestinationPath

Добавлено через 28 минут
Soft17, попробуйте мой (не идеальный вариант):
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Public Sub FSO_MoveFolder(strSoursePath As String, strDistPath As String, Optional bOverwrite As Boolean = True)
'Перемещение папки (или папок)- Moves one or more folders from one location to another.
'Аргументы:
'   strSoursePath    - Путь откуда
'   strDistPath      - Путь куда
'   bOverwrite       - Перезаписывать файлы по пути назначения
'--------------------------------------------------------------------------
Dim objFSO As Object
Dim s$, i%
 
On Error GoTo FSO_MoveFolder_Err
    
    DoCmd.Hourglass True 'Показать часики на случай большого кол-ва файлов
   
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    
    If Not objFSO.FolderExists(strSoursePath) Then
        MsgBox "Исходная папка:" & vbCrLf & strSoursePath & _
            vbCrLf & "не найдена.", vbExclamation
        GoTo FSO_MoveFolder_Bye
    End If
    
    If Not objFSO.FolderExists(strDistPath) Then
        MsgBox "Папка назначения:" & vbCrLf & strDistPath & _
            vbCrLf & "не найдена.", vbExclamation
        GoTo FSO_MoveFolder_Bye
    End If
    
    i = InStrRev(strSoursePath, "\")
    s = Mid(strSoursePath, i)
    s = strDistPath & s
    
    If Not Right(strDistPath, 1) = "\" Then strDistPath = strDistPath & "\"
    
    If Not Dir(s, vbDirectory) = "" Then
        If bOverwrite = True Then objFSO.DeleteFolder s
        DoEvents
    End If
    
    'перемещение папки:
    objFSO.MoveFolder strSoursePath, strDistPath
    DoEvents
 
FSO_MoveFolder_Bye:
    On Error Resume Next
    Set objFSO = Nothing
    DoCmd.Hourglass False 'Вернуть нормальный курсор
    Exit Sub
 
FSO_MoveFolder_Err:
    MsgBox "Ошибка " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
    "в процедуре: FSO_MoveFolder", vbCritical, "Error in Empty2003Application v005"
    Resume FSO_MoveFolder_Bye
End Sub


У вас будет так:
Visual Basic
1
     FSO_MoveFolder sourcePath, destinationPath
Если что - критика приветствуется с благодарностью.
1
5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 690
22.09.2020, 19:17  [ТС] 3
Eugene-LS,
Рассматриваю использование на двух дисках:
- диск "С" - диск компьютера (расположен на комп-1).
- диск "Z" - сетевой диск (расположен на комп-2).

Если папки на диске "С" - результат: работает.
Если папки на диске "Z" - результат: ошибка "Permission denied".

При выполнении операций папки закрыты. Т.е. файловый проводник не использует папки.

Вопрос: как сделать чтобы перемещение работало с диском "Z"?

Копирование папок для диска "Z" работает.
Visual Basic
1
fso.CopyFolder sourcePath, destinationPath, True
0
Заблокирован
22.09.2020, 19:22 4
Цитата Сообщение от Soft17 Посмотреть сообщение
как сделать чтобы перемещение работало с диском "Z"?
Не знаю
0
Эксперт MS Access
26812 / 14491 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
22.09.2020, 22:43 5
Лучший ответ Сообщение было отмечено Soft17 как решение

Решение

Цитата Сообщение от Soft17 Посмотреть сообщение
Копирование папок для диска "Z" работает.
Если копирование проходит, то следующим шагом можно удалить исходную папку
Visual Basic
1
fso.deletefolder sourcePath
2
Заблокирован
22.09.2020, 23:11 6
Цитата Сообщение от mobile Посмотреть сообщение
Если копирование проходит, то следующим шагом можно удалить исходную папку
Отличная идея!

Я тут просто тихо подумал про Брандмауэр Windows - там Access разрешены поползновения по сети?
А вдруг = нет!? Тогда и будет "Permission denied"
... Это уже вопрос к Soft17.
1
5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 690
23.09.2020, 13:04  [ТС] 7
Цитата Сообщение от Eugene-LS Посмотреть сообщение
Я тут просто тихо подумал про Брандмауэр Windows - там Access разрешены поползновения по сети?
А вдруг = нет!? Тогда и будет "Permission denied"
... Это уже вопрос к Soft17.
У меня Windows-7.
Как найти эту настройку?
Миниатюры
Переместить папку(каталог). Ошибка "File already exists"   Переместить папку(каталог). Ошибка "File already exists"   Переместить папку(каталог). Ошибка "File already exists"  

0
Заблокирован
23.09.2020, 15:22 8
Лучший ответ Сообщение было отмечено Soft17 как решение

Решение

Цитата Сообщение от Soft17 Посмотреть сообщение
Как найти эту настройку?
Проще сначала проверить работоспособность операций удаления - Копирования по сети из MSA
А уж если ... - То внести MSA в список программ коим всё разрешено.

Добавлено через 1 минуту
Цитата Сообщение от Soft17 Посмотреть сообщение
У меня Windows-7.
Да вы, батенька, ретроград!

Добавлено через 1 час 26 минут
Soft17, кстати, проверил по сети у себя:

Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Test002()
Dim sSrsPath As String   ' путь к папке источнику
Dim sDstPath As String   ' путь к папке получателю
            
    sSrsPath = "\\DESKTOP-VM16\Pub\Новая папка 001"   ' Источник
    sDstPath = "\\DESKTOP-VM16\Pub\Новая папка 002"
 
    FSO_MoveFolder sSrsPath, sDstPath
 
End Sub
Пашет!
И ещё раз (перезапись) - Опять отработало.

Процедура: FSO_MoveFolder() - без изменений, как в пост #2

Подключил сетевую папку как "Z:"
Visual Basic
1
2
3
    sSrsPath = "Z:\Новая папка 001"   
    sDstPath = "Z:\Новая папка 002"
    FSO_MoveFolder sSrsPath, sDstPath, True
... всё работает.
1
Модератор
9392 / 6161 / 2403
Регистрация: 21.01.2014
Сообщений: 26,268
Записей в блоге: 3
25.09.2020, 09:01 9
Цитата Сообщение от Eugene-LS Посмотреть сообщение
sSrsPath = "Z:\Новая папка 001"  
    sDstPath = "Z:\Новая папка 002"
Eugene-LS, так Вы перемещаете папку в пределах одного диска, неважно, локальный он или сетевой. Так работать будет. Проблема начинается, когда пытаемся произвести операцию перемещения с одного диска на другой, с С: на Z: к примеру...
Я и сам с этим сталкивался на других ЯП... Просто есть подозрение, что так заложено в Windows API, функции которого так или иначе подтягиваются при работе с файловой системой... Выход предельно прост и его уже указал mobile
1
Заблокирован
25.09.2020, 10:45 10
Цитата Сообщение от D1973 Посмотреть сообщение
Проблема начинается, когда пытаемся произвести операцию перемещения с одного диска на другой, с С: на Z: к примеру...
А! - теперь понял!
Спасибо.
... из за праздности, пьянства и прочих излишеств у меня голова не всегда ясная.
... надо будет потом свою процедурку поправить на сей предмет.
0
25.09.2020, 10:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2020, 10:45
Помогаю со студенческими работами здесь

Использование File.Exists
Всем привет! Есть необходимость мониторить папку на наличие файлов, файлы всегда разные, поэтому...

Mkdir(): File exists
Warning: mkdir(): File exists if(!file_exists($path)) mkdir($path); Вот как так?

Smarty if file exists
как в smarty произвести проверку file_exists ? мой вариант не находит картинки: {foreach...

Ошибка в коде программы RedBean: Base table or view already exists: 1050 Table 'users' already exists
Я пишу регистрацию на сайте через программу "Red Bean" Выдаёт такую ошибку: Fatal error:...

File Exists не находит файл
Приветствую. File Exists мне мозг вынес. Беру xml отдаю на съедение xsd.exe генериться xsd-файл...

Сложности с использованием File.Exists
Добавлено через 6 минут if (File.Exists(@"C:\12\logo.JPEG")) { ...

Windows7 копировать в папку переместить в папку
как сделать чтобы в windows 7 "копировать в папку" и "переместить в папку" было в меню нажатия...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru