Страница 1 из 1
Скрипт, использующий "загрузку имен из файла"
Добавлено: Чт сен 13, 2007 23:16
Georgе
Помогите,пожалуйста, написать скрипт, который бы делал следующее:
я устанавливаю в панелях исходную и целевую папки, нажимаю кнопочку, и файлы из одной папки переписываются поверх файлов того же размера из другой, но не под своими именами, а под именами перезаписанных. (нужно мне это для поддержки чужих закачек в торренте).
Предполагаю, что решать это надо с привлечением группового переименования и имеющегося там пункта "загрузки имен из файла".
Добавлено: Вт сен 25, 2007 03:58
Georgе
Подъем темы (в связи с падением форума).
Добавлено: Вт сен 25, 2007 05:53
LocKtaR-o-DarK
Georgе, конкретизируй задачу, приведи примеры файлов, может что-нить и придет в голову, а так описание задачи немного расплывчато
Добавлено: Вт сен 25, 2007 10:59
Batya
Georgе
При совпадении размера файлов содержимое отличается?
Добавлено: Вт сен 25, 2007 15:15
Georgе
Batya В целевой директории содержимое файлов полностью или частично нули. (так поступает торрент-клиент, кладет на диск "болванки" будущих файлов, забитые нулями).
LocKtaR-o-DarK Возможные случаи когда это может пригодиться - mp3,iso,архивы. Просто iso ввиду малочисленности можно и руками переименовать, а вот медиа-файлы, разбросанные по разным папкам,переименовывать руками уже сложно, нужен скрипт.
Добавлено: Чт сен 27, 2007 12:16
Вахмурка
Батник с параметрами %P %T не пойдет?
Добавлено: Чт сен 27, 2007 17:36
Georgе
Думаю, не подойдёт. Как я могу указать такому батнику какой файл перезаписывать каким? Критерий - совпадающий размер. Но как его проверить в батнике ?
Добавлено: Чт сен 27, 2007 18:40
Volniy
Georgе писал(а): Критерий - совпадающий размер.
А что если файлов с одинаковым размером будет несколько, хотя бы два? Что должен делать скрипт в этом случае? И, кроме этого, я так и не понял, у целевых файлов будут меняться имена в соответствии с именами файлов в панели-источнике или имена останутся прежними, а будет заменено тоьлко содержимое, взятое из файлов-источников
Согласен я с
LocKtaR-o-DarK, привел бы ты лучше
конкретный пример.
Добавлено: Чт сен 27, 2007 19:33
Georgе
Volniy писал(а):Georgе писал(а): Критерий - совпадающий размер.
А что если файлов с одинаковым размером будет несколько, хотя бы два? Что должен делать скрипт в этом случае?
Тогда скрипт перепишет один-два файла "неправомерно". Бог с ним, торрент-клиент распознает это при перехэшировании.
Пример: две папки с мп3. В целевой директории имена кириллицей, содержимое-нули. В исходной -имена латиницей, содержимое-нормальные мп3. Надо получить в целевой нормальные мп3 с теми же именами, что были у "зануленных", то есть кириллические. (Пример частный. Плагин-транслитератор не предлагать. Это могут быть просто имена с проверенной и непроверенной орфографией, и т.д.)
Добавлено: Пт дек 14, 2007 09:58
Batya
Georgе
vbs-скрипт:
Код: Выделить всё
'=============================================================================
' Замена содержимого файлов одной папки содержимым файлов другой папки
' при совпадении у файлов размеров
' Должно быть 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