Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Сравнить три списка имен файлов между собой.

Ответить
Настройки темы
VBS/WSH/JS - [решено] Сравнить три списка имен файлов между собой.

Старожил


Сообщения: 226
Благодарности: 4

Профиль | Отправить PM | Цитировать


Добрый день.

Имеются три папки:
Цитата:
Папка 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

-------
Альтернатива Всему!


Отправлено: 11:54, 19-12-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


читать дальше »
Код: Выделить весь код
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
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:27, 19-12-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Старожил


Сообщения: 226
Благодарности: 4

Профиль | Отправить PM | Цитировать


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

-------
Альтернатива Всему!


Отправлено: 15:19, 19-12-2013 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Сравнить три списка имен файлов между собой.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
D-Link - Два роутера соеденить мостом между собой??? AlexSoft132 Сетевое оборудование 0 12-12-2011 22:59
Разъёмы FM1 и FM2 несовместимы между собой OSZone News Новости железа 0 14-11-2011 20:30
Вопросы ни связанные между собой Vienna7 Хочу все знать 5 26-04-2010 02:23
Switch/802.3 - влияние соеденения свитчей между собой exo Сетевое оборудование 11 07-02-2009 19:34
[решено] Конфигурация. Совместимо ли между собой... mribo Выбор отдельных компонентов компьютера и конфигурации в целом 4 26-09-2008 15:22




 
Переход