Скрипт, использующий "загрузку имен из файла"
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Скрипт, использующий "загрузку имен из файла"
Помогите,пожалуйста, написать скрипт, который бы делал следующее:
я устанавливаю в панелях исходную и целевую папки, нажимаю кнопочку, и файлы из одной папки переписываются поверх файлов того же размера из другой, но не под своими именами, а под именами перезаписанных. (нужно мне это для поддержки чужих закачек в торренте).
Предполагаю, что решать это надо с привлечением группового переименования и имеющегося там пункта "загрузки имен из файла".
я устанавливаю в панелях исходную и целевую папки, нажимаю кнопочку, и файлы из одной папки переписываются поверх файлов того же размера из другой, но не под своими именами, а под именами перезаписанных. (нужно мне это для поддержки чужих закачек в торренте).
Предполагаю, что решать это надо с привлечением группового переименования и имеющегося там пункта "загрузки имен из файла".
- LocKtaR-o-DarK
- Сообщения: 349
- Зарегистрирован: Пт авг 12, 2005 04:20
- Откуда: Москва
- Контактная информация:
Batya В целевой директории содержимое файлов полностью или частично нули. (так поступает торрент-клиент, кладет на диск "болванки" будущих файлов, забитые нулями).
LocKtaR-o-DarK Возможные случаи когда это может пригодиться - mp3,iso,архивы. Просто iso ввиду малочисленности можно и руками переименовать, а вот медиа-файлы, разбросанные по разным папкам,переименовывать руками уже сложно, нужен скрипт.
LocKtaR-o-DarK Возможные случаи когда это может пригодиться - mp3,iso,архивы. Просто iso ввиду малочисленности можно и руками переименовать, а вот медиа-файлы, разбросанные по разным папкам,переименовывать руками уже сложно, нужен скрипт.
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Батник с параметрами %P %T не пойдет?
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
А что если файлов с одинаковым размером будет несколько, хотя бы два? Что должен делать скрипт в этом случае? И, кроме этого, я так и не понял, у целевых файлов будут меняться имена в соответствии с именами файлов в панели-источнике или имена останутся прежними, а будет заменено тоьлко содержимое, взятое из файлов-источниковGeorgе писал(а): Критерий - совпадающий размер.
Согласен я с LocKtaR-o-DarK, привел бы ты лучше конкретный пример.
Тогда скрипт перепишет один-два файла "неправомерно". Бог с ним, торрент-клиент распознает это при перехэшировании.Volniy писал(а):А что если файлов с одинаковым размером будет несколько, хотя бы два? Что должен делать скрипт в этом случае?Georgе писал(а): Критерий - совпадающий размер.
Пример: две папки с мп3. В целевой директории имена кириллицей, содержимое-нули. В исходной -имена латиницей, содержимое-нормальные мп3. Надо получить в целевой нормальные мп3 с теми же именами, что были у "зануленных", то есть кириллические. (Пример частный. Плагин-транслитератор не предлагать. Это могут быть просто имена с проверенной и непроверенной орфографией, и т.д.)
Georgе
vbs-скрипт:
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
Нет, я не сплю. Я просто медленно моргаю.
