противоречитLonerD писал(а):распаковка выделенного в каталог, в котором лежит архив
Короче, что-то вроде склейки этого и этого?LonerD писал(а):выделенное распаковывается в каталог рядом с архивом
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Подправил.противоречит
Первый из указанных скриптов - совсем не то. Нужна не рекурсивная распаковка нескольких архивов, а распаковка тех файлов, которые мы выделили, находясь внутри архива (как именно должна происходить распаковка - описано в последнем абзаце реквеста).Короче, что-то вроде склейки этого и этого?
Согласен. Поспешил. Пиши список используемых утилит (7-zip.exe, FreeArc, NanoZIP и т.д.).LonerD писал(а):Первый из указанных скриптов - совсем не то.
Это я во многих скриптах делаю. Там просто забыл про это.LonerD писал(а):Сделать защиту от дурака. Если файл находится в корневом каталоге диска или выделена строка перехода на уровень выше (то есть переместить на уровень вверх невозможно) - ничего не делать и не выбивать ошибку. Сейчас скрипт выбивает ошибку.
Код: Выделить всё
'=====================================================================================
' Cоздание папки/файла c буферным именем и возможностью перехода
' Условие: путь запуска очистить
' Возможные параметры: <переходить к элементу: 1> <расширение файла, если - файл>
' Примеры: <пусто> | 1 | "" lst | 1 txt
'=====================================================================================
With WScript.Arguments
C = .Count : If C > 0 Then Open = .Item(0) : If C > 1 Then Ext = .Item(1)
End With
With CreateObject("WScript.Shell")
P = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\1407"
A = .RegRead(P) : CD = .CurrentDirectory & "\"
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, "/", "_" : R C, "?", "_"
With CreateObject("Scripting.FileSystemObject")
Const M = 1
If Ext = "" Then
Name = C
Do While .FolderExists(CD & Name)
l = l + 1 : If l < 10^M Then PFx = Right(String(M, "0") & l, M) Else PFx = l
Name = C & " (" & PFx & ")"
Loop : .CreateFolder(CD & Name)
Else
Name = C & "." & Ext
Do While .FileExists(CD & Name)
l = l + 1 : If l < 10^M Then PFx = Right(String(M, "0") & l, M) Else PFx = l
Name = C & " (" & PFx & ")." & Ext
Loop : .CreateTextFile(CD & Name)
End If
End With
If Open = "" Then CreateObject("WScript.Shell").SendKeys "^R" Else _
CreateObject("WScript.Shell").Exec "%COMMANDER_EXE% /O /S /L=""" & CD & Name & "\'"""
End If : Sub R(N, A, B) : N = Replace(N, A, B) : End Sub