Скрипт, использующий "загрузку имен из файла"
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Автоматизация Total Commander

#1: Скрипт, использующий "загрузку имен из файла" Author: Georgе PostPosted: Thu Sep 13, 2007 23:16
    —
Помогите,пожалуйста, написать скрипт, который бы делал следующее:
я устанавливаю в панелях исходную и целевую папки, нажимаю кнопочку, и файлы из одной папки переписываются поверх файлов того же размера из другой, но не под своими именами, а под именами перезаписанных. (нужно мне это для поддержки чужих закачек в торренте).
Предполагаю, что решать это надо с привлечением группового переименования и имеющегося там пункта "загрузки имен из файла".

#2:  Author: Georgе PostPosted: Tue Sep 25, 2007 03:58
    —
Подъем темы (в связи с падением форума).

#3:  Author: LocKtaR-o-DarKLocation: Москва PostPosted: Tue Sep 25, 2007 05:53
    —
Georgе, конкретизируй задачу, приведи примеры файлов, может что-нить и придет в голову, а так описание задачи немного расплывчато

#4:  Author: BatyaLocation: Москва, Россия PostPosted: Tue Sep 25, 2007 10:59
    —
Georgе
При совпадении размера файлов содержимое отличается?

#5:  Author: Georgе PostPosted: Tue Sep 25, 2007 15:15
    —
Batya В целевой директории содержимое файлов полностью или частично нули. (так поступает торрент-клиент, кладет на диск "болванки" будущих файлов, забитые нулями).

LocKtaR-o-DarK Возможные случаи когда это может пригодиться - mp3,iso,архивы. Просто iso ввиду малочисленности можно и руками переименовать, а вот медиа-файлы, разбросанные по разным папкам,переименовывать руками уже сложно, нужен скрипт.

#6:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Thu Sep 27, 2007 12:16
    —
Батник с параметрами %P %T не пойдет?

#7:  Author: Georgе PostPosted: Thu Sep 27, 2007 17:36
    —
Думаю, не подойдёт. Как я могу указать такому батнику какой файл перезаписывать каким? Критерий - совпадающий размер. Но как его проверить в батнике ?

#8:  Author: VolniyLocation: Местный PostPosted: Thu Sep 27, 2007 18:40
    —
Georgе wrote:
Критерий - совпадающий размер.

А что если файлов с одинаковым размером будет несколько, хотя бы два? Что должен делать скрипт в этом случае? И, кроме этого, я так и не понял, у целевых файлов будут меняться имена в соответствии с именами файлов в панели-источнике или имена останутся прежними, а будет заменено тоьлко содержимое, взятое из файлов-источников Question

Согласен я с LocKtaR-o-DarK, привел бы ты лучше конкретный пример.

#9:  Author: Georgе PostPosted: Thu Sep 27, 2007 19:33
    —
Volniy wrote:
Georgе wrote:
Критерий - совпадающий размер.

А что если файлов с одинаковым размером будет несколько, хотя бы два? Что должен делать скрипт в этом случае?

Тогда скрипт перепишет один-два файла "неправомерно". Бог с ним, торрент-клиент распознает это при перехэшировании.

Пример: две папки с мп3. В целевой директории имена кириллицей, содержимое-нули. В исходной -имена латиницей, содержимое-нормальные мп3. Надо получить в целевой нормальные мп3 с теми же именами, что были у "зануленных", то есть кириллические. (Пример частный. Плагин-транслитератор не предлагать. Это могут быть просто имена с проверенной и непроверенной орфографией, и т.д.)

#10:  Author: BatyaLocation: Москва, Россия PostPosted: Fri Dec 14, 2007 10:58
    —
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



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group