Страница 2 из 4
Добавлено: Пн авг 15, 2011 16:42
Flasher
cojoc писал(а):3 нажимается кнопка, срабатывает скрипт меняется символы из буфера и переименовывается файл из пункта 1 на заголовок из 2 но с заменой символов
Ага, а в панели другая папка или другое выделение. Это не алгоритм.
Может так?:
2. Копируем заголовок шапки на трекере.
3. переходим из браузера в ТС, устанавливаем курсор на скаченным файле.
4. Жмём кнопку - подменяются симвлолы в буфере и базовое имя файла заменяется на обработанное имя.
Добавлено: Пн авг 15, 2011 16:48
cojoc
Flasher писал(а):устанавливаем курсор на скаченным файле.
да так, это я опустил, как подразумевающиеся, но для полноты ваш вариант правильней и лаконичней.
Добавлено: Пн авг 15, 2011 20:07
Flasher
Тут вопрос встал: что делать с символом ' " ' ? Ведь он один, а этих - ' « » ' - два.
Если бы после замыкающей кавычки шёл всегда пробел, то - не проблема, а то она может стоять и в конце, и между буквенными символами...
Добавлено: Пн авг 15, 2011 20:32
cojoc
Да я заметил Batya об этом упомянул, я знаю что это не совсем тривиальная задача, я знаю что для этого есть рекурсия и регвыражения, но в теории...
Можно в принципе заменить " на апострофы, а лучше даже на один символ ' или другой какой-нибудь, если кто возьмётся...
Добавлено: Пн авг 15, 2011 20:50
Flasher
С регекспами лень ковыряться, там и правда не так просто. Пусть будут апострофы:
Код: Выделить всё
' Переименовать базовое имя файла под курсором на текст в буфере
' Параметр - %V или %P%N
'===============================================================
F = WScript.Arguments(0)
Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FileExists(F) Then WScript.Quit
C = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
R C, """", "'"
R C, "|", "-"
R C, ":", " -"
R C, ";", ","
R C, "\", "_"
R C, "/", "_"
FSO.MoveFile F, FSO.GetParentFolderName(F) & "\" & C & "." & FSO.GetExtensionName(F)
Set FSO = Nothing
WScript.Quit
Sub R(N, A, B)
N = Replace(N, A, B)
End Sub
Добавлено: Пн авг 15, 2011 21:06
cojoc
Flasher
Оо спасибо сейчас проведу испытания!
Добавлено: Пн авг 15, 2011 21:13
Flasher
Кой-чего поправил.
Добавлено: Пн авг 15, 2011 21:23
cojoc
Работает! (: Спасибо Flasher!
Если кому интересен результат
было
[rutracker.org].t3669718.torrent
Исходный код / Source Code (Дункан Джонс / Duncan Jones) [2011, США, Франция, Фантастика, боевик, триллер, HDRip] Dub
стало
Исходный код _ Source Code (Дункан Джонс _ Duncan Jones) [2011, США, Франция, Фантастика, боевик, триллер, HDRip] Dub.torrent
Добавлено: Вт авг 16, 2011 16:21
Lev
Чем мой вариант не устраивал? Отсутствием кнопки?
Добавлено: Вт авг 16, 2011 16:28
Flasher
А ты прочти шапку скрипта. Твоя утилита ко всему прочему (у меня на 7) кракозябры выдаёт на кириллице.
Добавлено: Вт авг 16, 2011 16:30
Lev
Новая версия после правок с кракозябрами?
Добавлено: Вт авг 16, 2011 16:30
Flasher
Только что скачивал.
Добавлено: Вт авг 16, 2011 16:33
Lev
Тогда ясно.
Добавлено: Чт окт 25, 2012 21:47
shveicar
Здравствуйте.
А можно добавить в скрипт
Переименовать базовое имя файла под курсором
возможность также, переименовывать не только файл, но и каталог под курсором, или это должен быть отдельный скрипт?
Добавлено: Пт окт 26, 2012 00:07
Flasher
Код: Выделить всё
' Переименовать базовое имя файла/папки под курсором на текст в буфере
' Параметр - %V %d
'=====================================================================
With WScript.Arguments
If .Count = 0 then Wscript.Quit
F = .Item(0)
End With
With CreateObject("WScript.Shell")
P = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\1407"
A = .RegRead(P)
If A > 0 Then .RegWrite P, 0, "REG_DWORD"
C = Trim(CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text"))
If A > 0 Then .RegWrite P, A, "REG_DWORD"
End With
If C <> "" Then
If InStr(C, vbLf) > 0 Then C = Left(C, InStr(C, vbCr) - 1)
R C, """", "''" : R C, "|", "-" : R C, ":", " -"
R C, ";", "," : R C, "\", "_" : R C, "/", "_"
With CreateObject("Scripting.FileSystemObject")
PF = .GetParentFolderName(F) & "\" : Const M = 1
If .FolderExists(F) Then
Name = C
Do While .FolderExists(PF & Name)
l = l + 1 : If l < 10^M Then PFx = Right(String(M, "0") & l, M) Else PFx = l
Name = C & " (" & PFx & ")"
Loop : .GetFolder(F).Name = Name
Else
Ext = .GetExtensionName(F) : Name = C & "." & Ext
Do While .FileExists(PF & Name)
l = l + 1 : If l < 10^M Then PFx = Right(String(M, "0") & l, M) Else PFx = l
Name = C & " (" & PFx & ")." & Ext
Loop : .GetFile(F).Name = Name
End If
End With : WScript.Quit
End If : Sub R(N, A, B) : N = Replace(N, A, B) : End Sub