'=============================================================================
' Замена содержимого файлов одной папки содержимым файлов другой папки
' при совпадении у файлов размеров
' Должно быть 2 входных параметра - исходная папка (откуда копировать) и
' целевая папка (куда копировать)
' Пример параметров в TC:
' "%P" "%T"
'=============================================================================
Option Explicit
' Проверяем число параметров
If WScript.Arguments.Count < 2 Then
MsgBox "Неправильно заданы параметры!", _
vbOKOnly + vbCritical, _
"Замена содержимого файлов"
WScript.Quit
End If
Dim FSO, SourceDir, TargetDir
Set FSO = CreateObject("Scripting.FileSystemObject")
SourceDir = WScript.Arguments(0)
TargetDir = WScript.Arguments(1)
If Not FSO.FolderExists(SourceDir) Then
MsgBox "Неправильно задана исходная папка!", _
vbOKOnly + vbCritical, _
"Замена содержимого файлов"
Set FSO = Nothing
WScript.Quit
End If
If Not FSO.FolderExists(TargetDir) Then
MsgBox "Неправильно задана целевая папка!", _
vbOKOnly + vbCritical, _
"Замена содержимого файлов"
Set FSO = Nothing
WScript.Quit
End If
Dim F, SizeArr, i, TargetFile
Set SizeArr = CreateObject("Scripting.Dictionary")
For Each F In FSO.GetFolder(SourceDir).Files
On Error Resume Next
SizeArr.Add F.Size, F.Path
If Err.Number <> 0 Then
MsgBox "В исходной папке несколько файлов имеют одинаковый размер." & vbNewLine &_
"Невозможно однозначное соответствие!", _
vbOKOnly + vbCritical, _
"Замена содержимого файлов"
Set F = Nothing
Set FSO = Nothing
Set SizeArr = Nothing
WScript.Quit
End If
On Error Goto 0
Next
i = 0
For Each F In FSO.GetFolder(TargetDir).Files
TargetFile = SizeArr(F.Size)
If FSO.FileExists(TargetFile) Then
FSO.CopyFile TargetFile, F.Path, True
i = i + 1
End If
Next
MsgBox "Выполнена замена содержимого " & i & " файлов.", _
vbOKOnly + vbInformation, _
"Замена содержимого файлов"
Set F = Nothing
Set FSO = Nothing
Set SizeArr = Nothing
WScript.Quit
|