Страница 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