Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Скрипт, использующий "загрузку имен из файла" 
Author Message
Batya



PostPosted: Fri Dec 14, 2007 10:58    Post subject: Reply with quote

Georgе
vbs-скрипт:
Code:
'=============================================================================
' Замена содержимого файлов одной папки содержимым файлов другой папки
'   при совпадении у файлов размеров

' Должно быть 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

_________________
Нет, я не сплю. Я просто медленно моргаю.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group