Страница 34 из 52

Добавлено: Ср авг 31, 2016 21:31
Flasher
Dimsok писал(а):А то этак даже тупо копипаст не сделаешь
Чего это не сделаешь? 2017 на хоткей назначь и пользуйся.

Добавлено: Ср авг 31, 2016 21:41
Dimsok
2017 на хоткей назначь и пользуйся.
Сгодится такой вариант, пока файлов не так много. Может, в будущем понадобится какое-нибудь более массовое решение.

Добавлено: Ср авг 31, 2016 22:55
Flasher
Ну, смотри.

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\nircmd\nircmd.exe execmd "for /f "delims=" %i in ('type
%WL') do for /f "delims=" %%# in ('Rar.exe lb "%%i"^|find /v "\"') do ren "%%i" "%%#%%~~xi""
wciconex.dll,221
Переименовать выбранные RAR-архивы|в имена вложенных одиночных объектов
%COMMANDER_PATH%\Utils\WinRAR\
1

Добавлено: Ср авг 31, 2016 23:27
Dimsok
Ну, смотри.
Благодарю.

Добавлено спустя 3 минуты:

Хотя наверное с 7z было бы универсальней, чем с Winrar; и для других типов архивов.

Добавлено: Ср авг 31, 2016 23:35
Flasher
7z не во всех случаях выводит одинаково инфу, у него косяки с этим.
Но ты сам запросил rar, так что пиняй на себя. :wink:

Добавлено: Ср авг 31, 2016 23:49
Dimsok
Ну лан, сейчас пока хватает rar, но потом может всё же понадобиться "штука", если каких-нибудь зипов наберётся более сотни штук.

Добавлено спустя 8 минут:

Да, в кнопке где-то кавычек не хватает? Именует только до пробела.

Добавлено: Ср авг 31, 2016 23:49
Flasher
А у тебя TC4Shell стоит? Если да, то скриптом можно смотреть внутрь без утилит.

Добавлено: Ср авг 31, 2016 23:53
Dimsok
Просто TCShell имеется для отображения тотала в контекстном меню? Это то же же самое?

Добавлено: Ср авг 31, 2016 23:56
Flasher
Нет, это другое.

Добавлено: Чт сен 01, 2016 00:12
Dimsok
Flasher писал(а):А у тебя TC4Shell стоит? Если да, то скриптом можно смотреть внутрь без утилит.
Скачаю, поставлю, а скрипт где взять?

И что насчёт приведённой выше кнопки? Что подправить, чтобы именовалось полным названием, с пробелами?

Добавлено: Чт сен 01, 2016 00:20
Flasher
Скрипт пока негде. Я про то, что если скрипт писать, то с этим проще.
Кнопку поправил.

Добавлено: Чт сен 01, 2016 17:50
Flasher
Dimsok

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

'••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
' Переименовать выбранные архивы в имена вложенных одиночных объектов
' Условие: Наличие инсталляции системного аддона TC4Shell
' Страница загрузки: http://www.tc4shell.com/ru/download/
' Параметр: %WL
'••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
If WScript.Arguments.Count = 0 Then WSCript.Quit
Set FSO = CreateObject("Scripting.FileSystemObject")
Set ShA = CreateObject("Shell.Application")
Set Reg = New Regexp
Reg.IgnoreCase = True: Reg.Pattern = "^(001|7z(|ip)|a|apm|arj?|bz(|ip)2|" &_
"cab|cpio|ch[iqmw]|cramfs|deb|dmg|docx?|e(sd|pub|xe|xt[234]?)|fat|gz(|ip" &_
")|hfsx?|hx[sirqw]|ihex|img|iso|jar|li[bt]|l(zh|ma)|lha|mbr|ms(i|lz|sp)|" &_
"mub|n(si|tf)s|od[st]|qcow(|2c?)|r00|rar|rpm|pkg|ppmd|ppt|squashfs|scap|" &_
"swm|t[agx]z|tar|tbz2?|u(d|efi)f|vdi|vhd|vmdk|wim|x(ar|lsx?|pi|z)|z|zipx?)$"

With FSO.OpenTextFile(WSCript.Arguments(0),,,-1)
  Do : F = .ReadLine : Ext = FSO.GetExtensionName(F)
    If FSO.FileExists(F) And Reg.Test(Ext) Then
      Set Items = ShA.NameSpace(F).Items
      Items.Filter 73952, "*"
      If Items.Count = 1 Then
        c = 0 : Set N = Items.Item(0)
        P = N.Parent.Self.Parent.Self.Path & "\"
        If Not N.IsFolder Then N = FSO.GetBaseName(N)
        If InStr(FSO.GetBaseName(F), N) = 0 Then
          Nm = N & "." & Ext
          While FSO.FileExists(P & Nm) Or FSO.FolderExists(P & Nm)
            c = c + 1 : Nm = N & " (" & c & ")." & Ext
          Wend : FSO.GetFile(F).Name = Nm
        End If
      End If
    End If
  Loop Until .AtEndOfStream : .Close
End With
P.S.: И вообще с TC4Shell такие вещи без лагов и тормозов решаются.

Добавлено: Чт сен 01, 2016 21:19
Dimsok
Flasher
Спасибо, поставлю, проверю, если что не так, отпишусь.

Добавлено: Чт сен 01, 2016 22:41
Flasher
Dimsok
Могу заменить на вариант немного поумнее:
1) Если файл, то берём только базовое имя.
2) Если часть имени архива совпадает с именем влож. объекта, то не трогаем.
3) Счётчик при наличии в папке таких имён.

Добавлено: Пт сен 02, 2016 10:34
Dimsok
Что-то у меня Tc4shell не ставится. Выдаёт ошибку в конце "Unable to register the dll/ocs:regsvr32 failde with exit code 0x5". Жму ignore, но скрипт в итоге не отрабатывает.

Добавлено спустя 18 минут:

Установился, свою основную функцию вроде выполняет, но скрипт молча отказывается работать. Файловые ассоциации нужны?

Добавлено спустя 10 минут:

И ничего что запуск "TC4ShellConsoleProxy.exe" выдаёт ошибку?