Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Сравнить три списка имен файлов между собой. (http://forum.oszone.net/showthread.php?t=274278)

bombording 19-12-2013 11:54 2274834

Сравнить три списка имен файлов между собой.
 
Добрый день.

Имеются три папки:
Цитата:

Папка 1:
файл1
файл2
файл3

Папка 2:
файл9
файл10
файл11

Папка 3:
файл1
файл2
файл3
файл4
файл5
файл6
файл7
файл8
файл9
файл10
файл11
файл12
...
В папке номер 3 должны находится файлы из папки 1 и папки 2, а так же другие файлы.

Задача:
- Получить три списка файлов.
- Сравнить списки из папок 1 и 2 со списком 3.
- В случае если в списке 3 нет какого то файла из списка 1 или 2, выдать ошибку.


Я пока реализовал получение списка через FileSystemObject. А вот со сравнением у меня проблемы...
Помогите пожалуйста.

Код:

Option Explicit

  Dim fso, f, f1, fc, s
  Dim d, dc, d1
  Dim e, ec, e1
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set f = fso.GetFolder("D:\test\1")
  Set d = fso.GetFolder("D:\test\2")
  Set e = fso.GetFolder("D:\test\3")
  Set fc = f.Files
  Set dc = d.Files
  Set ec = e.Files

  For Each f1 in fc
      For Each d1 in dc
        IF f1.name<>d1.name THEN
            Wscript.Echo d1.name
            ELSE
                Wscript.Echo "No"
        END IF
      Next
  Next


Iska 19-12-2013 13:27 2274873

читать дальше »
Код:

Option Explicit

Dim strSourceFolder01
Dim strSourceFolder02
Dim strDestFolder

Dim objFile

Dim objDictionary
Dim elem

strSourceFolder01 = "C:\Песочница\036\01"
strSourceFolder02 = "C:\Песочница\036\02"
strDestFolder    = "C:\Песочница\036\03"

With WScript.CreateObject("Scripting.FileSystemObject")
        If .FolderExists(strSourceFolder01) Then
                If .FolderExists(strSourceFolder02) Then
                        If .FolderExists(strDestFolder) Then
                                Set objDictionary = WScript.CreateObject("Scripting.Dictionary")
                               
                                For Each objFile In .GetFolder(strSourceFolder01).Files
                                        objDictionary.Add objFile.Name, objFile.Name
                                Next
                               
                                For Each objFile In .GetFolder(strSourceFolder02).Files
                                        If Not objDictionary.Exists(objFile.Name) Then
                                                objDictionary.Add objFile.Name, objFile.Name
                                        End If
                                Next
                               
                                For Each elem In objDictionary.Items
                                        If Not .FileExists(.BuildPath(strDestFolder, elem)) Then
                                                WScript.Echo "выдать ошибку"
                                                WScript.Quit 4
                                        End If
                                Next
                        Else
                                WScript.Echo "Destination folder [" & strDestFolder & "] not found."
                                WScript.Quit 3
                        End If
                Else
                        WScript.Echo "Source folder [" & strSourceFolder02 & "] not found."
                        WScript.Quit 2
                End If
        Else
                WScript.Echo "Source folder [" & strSourceFolder01 & "] not found."
                WScript.Quit 1
        End If
End With

WScript.Quit 0


или:
читать дальше »
Код:

Option Explicit

Dim strSourceFolder01
Dim strSourceFolder02
Dim strDestFolder

Dim objFile

Dim objDictionary
Dim elem

strSourceFolder01 = "C:\Песочница\036\01"
strSourceFolder02 = "C:\Песочница\036\02"
strDestFolder    = "C:\Песочница\036\03"

With WScript.CreateObject("Scripting.FileSystemObject")
        If .FolderExists(strSourceFolder01) Then
                If .FolderExists(strSourceFolder02) Then
                        If .FolderExists(strDestFolder) Then
                                Set objDictionary = WScript.CreateObject("Scripting.Dictionary")
                               
                                For Each objFile In .GetFolder(strDestFolder).Files
                                        objDictionary.Add objFile.Name, objFile.Name
                                Next
                               
                                For Each objFile In .GetFolder(strSourceFolder02).Files
                                        If Not objDictionary.Exists(objFile.Name) Then
                                                WScript.Echo "выдать ошибку"
                                                WScript.Quit 4
                                        End If
                                Next
                               
                                For Each objFile In .GetFolder(strSourceFolder01).Files
                                        If Not objDictionary.Exists(objFile.Name) Then
                                                WScript.Echo "выдать ошибку"
                                                WScript.Quit 4
                                        End If
                                Next
                        Else
                                WScript.Echo "Destination folder [" & strDestFolder & "] not found."
                                WScript.Quit 3
                        End If
                Else
                        WScript.Echo "Source folder [" & strSourceFolder02 & "] not found."
                        WScript.Quit 2
                End If
        Else
                WScript.Echo "Source folder [" & strSourceFolder01 & "] not found."
                WScript.Quit 1
        End If
End With

WScript.Quit 0


bombording 19-12-2013 15:19 2274949

Iska, Большое спасибо.
Второй пример более понятный.


Время: 05:09.

Время: 05:09.
© OSzone.net 2001-