Страница 2 из 2

Добавлено: Пт мар 14, 2008 16:35
Моторокер
_Johm писал(а):Вообщем, вопрос по переименованию не имеет однозначного ответа.
Имеет. Читай мой ответ выше.
По другим проблемам создавай отдельную тему.

Добавлено: Пт мар 14, 2008 19:28
Worros
Вполне однозначный ответ : в нынешней версии Тотала нельзя никак.
Все остальные варианты основаны на допущениях, что Гислер что-то доделает(в чем я весьма сомневаюсь).

Добавлено: Вс мар 16, 2008 00:19
aLexx
_Johm писал(а):пробую удалить файл из архива - УДАЛЯЕТ, не спросив пароль.
У меня спрашивает... Но!
Изображение

Заметно? Фокус не на окошке ввода пароля. Щёлкаешь мышом по ему, а фокус перескакивет на окно RAr'a.
Что бы его ввести, надо очень постараться.

Добавлено: Вт апр 01, 2008 08:50
Моторокер
Подозреваю, что это проблема WinRAR. Автору пробовал писать?

Добавлено: Сб апр 05, 2008 05:34
aLexx
Не-а... Sm2bt! Выключил, и всё ОК!

Добавлено: Пт окт 04, 2019 09:51
doslidnik
Здраствуйте есть ли решение проблемьі с переименованием файлов в RAR или 7zip архиве?
Версия Total 8.52a

Добавлено: Пт окт 04, 2019 13:30
Flasher
Нет. Для RAR ждать смысла нет, это не Open source. Для других архивов (кроме zip) надо терзать Гислера, чтобы добавил опцию к сумме значенией ключа и потенциальные ключи для параметров переименования.

[cut="Желающие могут оценить скрипт:"]

Код: Выделить всё

'====================== VBS ======================
' Назначение: переименование объекта под курсором,
' в т. ч. расположенного в архиве допустимого типа

' Условие: требуется компонент TCScript.dll

Option Explicit: Dim Z7G, RAR, WSS, Title
'=========== Пути к утилитам 7zG и rar ===========
Z7G = """%COMMANDER_PATH%\Utils\7-zip\7zG.exe"""
RAR = """%COMMANDER_PATH%\Utils\WinRAR\rar.exe"""
'============================ Автор: Flasher © ===

Set WSS = CreateObject("WScript.Shell")
Title = " Переименование объекта под курсором"
If WSH.Arguments.Named.Exists("sel") Then
  Dim Sel, Ln, L, N, A : L = "{HOME}"
  Sel = Split(WSH.Arguments.Named("sel"), "|")
  If Sel(0) Then L =  "{LEFT " & Sel(0) - 1 & "}"
  If Sel(1) Then N = "+{LEFT " & Sel(1) + 1 & "}"
  Do : A = WSS.AppActivate(Title) : Loop Until A
  If Sel(0) + Sel(1) Then WSS.SendKeys L & "+{END}" & N
  WSH.Quit
End If
Dim FSO, TCH, Dir
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TCH = CreateObject("TCScript.Helper") : TCH.Pause = 0
Dir = TCH.GetSrcPath: If Dir = "" Then Quit 1002
If FSO.FolderExists("\\?\" & Dir) Then Quit 1002
If InStr(Dir, "/") Or Left(Dir, 3) = "\\\" Then Quit 1002
Dim APath, Ext, ArrB, i, Dec, Exts, FName, RExp, NName, Y, Ins, Util, SD, M, W
FName = TCH.GetInfo("SN"): If FName = ".." Then Quit 2912
If Mid(FName, 2, 2) = ":\" Then FName = Mid(FName, 4)
APath = Left(Dir, Len(Dir) - Len(Left(FName, InStrRev(FName, "\"))) - 1)
With CreateObject("SAPI.SpFileStream") .Open APath : .Read ArrB, 4 : .Close : End With
For i = 1 To 4 : Dec = Dec & AscB(MidB(ArrB, i, 1)) : Next
Ext = FSO.GetExtensionName(APath)
If Dec = 807534 Or StrComp(Ext, "crx", 1) = 0 Then Quit 1002
Exts  = "|7z|7zip|bz2|bzip2|esd|exe|gz|gz2|gzip|gzip2|rar|swm|tar|tbz|tbz2|tgz|txz|wim|xz|"
If InStr(1, Exts, "|" & Ext & "|", 1) = 0 Then
  WSS.Popup "Данный тип архива не поддерживает переименование!", 2, Title, 4144
Else
  Y = (CreateObject("htmlfile").ParentWindow.Self.Screen.Height-18240/_
  WSS.RegRead("HKCU\Control Panel\Desktop\WindowMetrics\AppliedDPI"))*7.5
  Set RExp = New RegExp : RExp.Pattern = "[""/*:|?<>]" : NName = FName
  Do: WSS.Run """" & WSH.ScriptFullName & """ /sel:" &_
    InStr(StrReverse(NName), "\") & "|" & Len(FSO.GetExtensionName(NName))
    NName = InputBox(vbCr & vbCr & Ins & String(3, vbCr) & "Введите новое имя:", Title, NName,,Y)
    If Trim(NName) = "" Then Set RExp = Nothing : Quit 0
    If RExp.Test(NName) Then Ins = Space(23) & "Ошибка:  недопустимое имя!" Else Exit Do
  Loop
  If StrComp(Ext, "rar", 1) = 0 Then Util = RAR : SD = "tk" Else Util = Z7G : SD = "stl"
  M = 0 : W = 0 : If SD <> "" Then W = 1 : If InStr(FName, "\") Then M = 2
  WSS.Run Util & " rn -" & SD & " -- """ & APath & """ """ & FName & """ """ & NName & """", M, W
  If SD <> "" And M = 0 Then TCH.SetSrcPath Dir
End If : Quit 0
Sub Quit(Num) : If Num Then TCH.SendCommand Num
Set FSO = Nothing : Set TCH = Nothing : Set WSS = Nothing : WSH.Quit : End Sub
[/cut]