Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
8 / 8 / 1
Регистрация: 09.10.2013
Сообщений: 613
VBS

Сравнение двух папок

05.06.2015, 11:48. Показов 5452. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть две папки Work(имеет кучу подпаок и файлов) на сетевом диске и папка Work(имеет кучу подпаок и файлов) на локальном диске. необходимо сравнить две папки, и если вносились изменения в файлы, либо добавлялись новые файлы, то скопировать их с сетевого диска на локальный.
заранее благодарен за помощь!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.06.2015, 11:48
Ответы с готовыми решениями:

Сравнение файлов и папок
Пожалуйста помогите. Требуется скрипт на vbs, который в 2-ух папках сравнивал бы содержимое по названию (в 1-ой папке файлы (txt), во...

Сравнение содержимого двух папок.
Подскажите пож-ста по следующему вопросу: Была папка, к ней сделана резервная копия. Далее и в ту и в другую добавлялись файлы (так...

Сравнение содержимого двух папок
Доброго времени суток всем. Помогите написать батник. Сам в этом не селен. Суть в следующем : Необходимо сравнить две папки(с...

6
30 / 30 / 13
Регистрация: 19.05.2015
Сообщений: 52
05.06.2015, 15:13
Лучший ответ Сообщение было отмечено adb420 как решение

Решение

К сожалению, не умею делать побитовое сравнение файлов, но реализовать по размеру и дате последней модификации для меня реально. Может быть, допилит кто-нибудь

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
55
56
57
58
59
Set FSO=CreateObject("Scripting.FileSystemObject")
 
Dim X 'network
Dim D 'local
Dim Xfolder
Dim Xfile
Dim Yfile
 
Set X=FSO.GetFolder("X:\Work")
Set D=FSO.GetFolder("D:\Work")
 
For Each Xfolder In X.SubFolders
    If Not FSO.FolderExists(Replace(Xfolder.Path,"X:\","D:\")) Then
        FSO.CopyFolder Xfolder.Path, Replace(Xfolder.Path,"X:\","D:\"),1
    Else
        If Xfolder.SubFolders.Count<>0 Or Xfolder.Files.Count<>0 Then
            folder_search(Xfolder.Path)
        End If
    End If
Next
 
For Each Xfile In X.Files
    If Not FSO.FileExists(Replace(Xfile.Path,"X:\","D:\")) Then
        FSO.CopyFile Xfile.Path, D.Path & "\",1
    Else
        Set Yfile=FSO.GetFile(Replace(Xfile.Path,"X:\","D:\"))
        If Xfile.Size<> Yfile.Size Or Xfile.DateLastModified<> Yfile.DateLastModified Then
            FSO.CopyFile Xfile.Path, D.Path & "\",1
        End If
    
    End If
Next
 
    
Sub folder_search(name_folder)
    Set act_folder=FSO.GetFolder(name_folder)
    Dim Xsubfile
    Dim Ysubfile
    Dim Xsubfolder
    Dim Ysubfolder
    
    For Each Xsubfile In act_folder.Files
        If Not FSO.FileExists(Replace(Xsubfile.Path,"X:\","D:\")) Then
            FSO.CopyFile Xsubfile.Path, Replace(Xsubfile.ParentFolder,"X:\","D:\") & "\",1
        Else
            Set Ysubfile=FSO.GetFile(Replace(Xsubfile.Path,"X:\","D:\"))
            If Xsubfile.Size<> Ysubfile.Size Or Xsubfile.DateLastModified<> Ysubfile.DateLastModified Then
                FSO.CopyFile Xsubfile.Path, D.Path & "\",1
            End If
        End If
    Next
    For Each Xsubfolder In act_folder.SubFolders
        If Not FSO.FolderExists(Replace(Xsubfolder.Path,"X:\","D:\")) Then
            FSO.CopyFolder Xsubfolder.Path, Replace(Xsubfolder.Path,"X:\","D:\"),1
        Else
            folder_search(Xsubfolder.Path)
        End If
    Next
End Sub
У меня код отработал, попробуйте
1
8 / 8 / 1
Регистрация: 09.10.2013
Сообщений: 613
05.06.2015, 15:36  [ТС]
otakuneka, спасибо

Добавлено через 6 минут
otakuneka, а можно что бы после сравнения еще через Msgbox выдавалось сообщение, если данные в папках одинаковы, то выдать сообщение, что данные актуальны, а если есть изменения, то задать вопрос копировать данные, если пользователь нажмет "да", то соответственно их скопировать, если нет, то нет.и после завершения копирования выдать сообщение, что данные успешно скопированы!? помогите еще с этим пожалуйста. буду благодарен. заранее спасибо!
1
30 / 30 / 13
Регистрация: 19.05.2015
Сообщений: 52
05.06.2015, 16:06
Лучший ответ Сообщение было отмечено adb420 как решение

Решение

Нет возможности проверить. Вроде так:
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Set FSO=CreateObject("Scripting.FileSystemObject")
 
Dim X 'network
Dim D 'local
Dim Xfolder
Dim Xfile
Dim Yfile
 
Set X=FSO.GetFolder("X:\Work")
Set D=FSO.GetFolder("D:\Work")
 
For Each Xfolder In X.SubFolders
    If Not FSO.FolderExists(Replace(Xfolder.Path,"X:\","D:\")) Then
        b=MsgBox("Каталог " & Xfolder.Path & " не обнаружен в " & Replace(Xfolder.ParentFolder,"X:\","D:\") & ". Скопировать?",vbYesNo)
        If b=vbYes Then
            FSO.CopyFolder Xfolder.Path, Replace(Xfolder.Path,"X:\","D:\"),1
        End If
    Else
        If Xfolder.SubFolders.Count<>0 Or Xfolder.Files.Count<>0 Then
            folder_search(Xfolder.Path)
        End If
    End If
Next
 
For Each Xfile In X.Files
    If Not FSO.FileExists(Replace(Xfile.Path,"X:\","D:\")) Then
        a=MsgBox("Файл " & Xfile.Path & " не обнаружен в " & Replace(Xfile.ParentFolder,"X:\","D:\") & ". Скопировать?",vbYesNo)
        If a=vbYes Then
            FSO.CopyFile Xfile.Path, D.Path & "\",1
        End If
    Else
        Set Yfile=FSO.GetFile(Replace(Xfile.Path,"X:\","D:\"))
        If Xfile.Size<> Yfile.Size Or Xfile.DateLastModified<> Yfile.DateLastModified Then
            a=MsgBox("Файл " & Xfile.Path & " отличается от " & Yfile.Path & ". Заменить?",vbYesNo)
            If a=vbYes Then
                FSO.CopyFile Xfile.Path, D.Path & "\",1
            End If
        End If
    
    End If
Next
 
    
Sub folder_search(name_folder)
    Set act_folder=FSO.GetFolder(name_folder)
    Dim Xsubfile
    Dim Ysubfile
    Dim Xsubfolder
    Dim Ysubfolder
    
    For Each Xsubfile In act_folder.Files
        If Not FSO.FileExists(Replace(Xsubfile.Path,"X:\","D:\")) Then
            c=MsgBox("Файл " & Xsubfile.Path & " не обнаружен в " & Replace(Xsubfile.ParentFolder,"X:\","D:\") & ". Скопировать?",vbYesNo)
            If c=vbYes Then
                FSO.CopyFile Xsubfile.Path, Replace(Xsubfile.ParentFolder,"X:\","D:\") & "\",1
            End If
        Else
            Set Ysubfile=FSO.GetFile(Replace(Xsubfile.Path,"X:\","D:\"))
            If Xsubfile.Size<> Ysubfile.Size Or Xsubfile.DateLastModified<> Ysubfile.DateLastModified Then
                c=MsgBox("Файл " & Xsubfile.Path & " отличается от " & Ysubfile.Path & ". Заменить?",vbYesNo)
                If c=vbYes Then
                    FSO.CopyFile Xsubfile.Path, D.Path & "\",1
                End If
            End If
        End If
    Next
    For Each Xsubfolder In act_folder.SubFolders
        If Not FSO.FolderExists(Replace(Xsubfolder.Path,"X:\","D:\")) Then
            e=MsgBox("Каталог " & Xsubfolder.Path & " не обнаружен в " & Replace(Xsubfolder.ParentFolder,"X:\","D:\") & ". Скопировать?",vbYesNo)
            If e=vbYes Then
                FSO.CopyFolder Xsubfolder.Path, Replace(Xsubfolder.Path,"X:\","D:\"),1
            End If
        Else
            folder_search(Xsubfolder.Path)
        End If
    Next
End Sub
1
8 / 8 / 1
Регистрация: 09.10.2013
Сообщений: 613
08.06.2015, 10:42  [ТС]
otakuneka, а как мне просто выдать сообщение в конце, когда все файлы/папки будут скопированы, что скрипт успешно завершил свою работу. огромное спасибо за помощь!!!
0
30 / 30 / 13
Регистрация: 19.05.2015
Сообщений: 52
08.06.2015, 11:47
adb420, чтобы проверить, скопировался\заменился\удалился ли объект, необходимо после каждого действия делать проверку на наличие или отсутствие этого объекта - немного муторно, но реально. Таким образом можно создать счётчик ошибок, если операция не была произведена, как надо. Если такой счётчик организовать (например, count_error), то в самом конце прописать проверку на его 0, т.е.:
Visual Basic
1
2
3
4
5
if count_error=0 then
      msgbox "Операция синхронизации завершена успешно"
else
      msgbox "Не удалось обработать " & count_error & " объект(ов)"
end if
На самом деле,мне кажется, это всё нужно делать с созданием log-файла, в который записывать, какие файлы и куда были скопированы, а какие нет
1
8 / 8 / 1
Регистрация: 09.10.2013
Сообщений: 613
08.06.2015, 11:58  [ТС]
otakuneka, да, наверно, вы правы, что нужно создать log-файл.
но мне было необходимо хоть что то, и что бы работало!) просить вас еще и о создании log файла, будет уже не красиво. поэтому спасибо вам большое за помощь!! все работает!!!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.06.2015, 11:58
Помогаю со студенческими работами здесь

Сравнение двух папок с файлами и удаление дубликатов
Добрый день Уважаемые Гуру, вопрос конечно изъезженный, но никак не могу сообразить как сделать Имеется 2 папки: К примеру папка One и...

Сравнение двух папок с копированием измененных файлов
Всем привет! Дано 2 папки с файлами и подпапками. F:\Folder1 - рабочая папка F:\Folder2 - папка в которую делается копия Необходимо...

Сравнение двух папок с файлами и выбор наименьших фалов
Привет, пытаюсь написать bat'ник. Суть задачи такова. Имеются две папки. В них одинаковые имена файлов, но они различаются по размерам....

Сравнение содержимого двух папок и вывод на экран различия
Имеются две папки (1,2) Помогите создать батник, что бы он мог сравнить две папки, а затем выводить, каких файлов нет в 1 папке по...

Сравнение папок
Ребят, можно ли так делать? if((Edit1-&gt;Text!=Edit3-&gt;Text)&amp;(CheckBox2-&gt;Checked==false)) { Label6-&gt;Caption=&quot;Размеры папок не...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru