Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Visual Basic: Общие вопросы > Распаковка архива RAR


Автор: BlackSun 10.04.19, 19:16
Вроде всё указал правильно, но не вижу результата. Ошибки не получаю. Консольное окно распаковки закрывается, файла отчёта тоже не получаю. В чём проблема?

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    Dim lRet As Long, Pass As String, sTmp As String, FileName As String, FolderDef As String
    'E:\Temp\UnRAR.exe + test.rar
        FolderDef = "E:\Temp\"
        FileName = "UnRAR.exe"
    'параметры для UnRAR.exe
        sTmp = " e -p[" _
        & "pass" _
        & "]" & " test.rar >rep.txt" & Chr(0)
     
        lRet = ShellExecute(0, "open", FolderDef & FileName, sTmp, FolderDef & Chr(0), SW_SHOWNORMAL)
        If lRet <= 32 Then
         MsgBox "Ошибка выполнения теста!", vbCritical, NamePrg
         Exit Sub
        End If


Добавлено
И ещё: в пароле допускаются символы ASCII[33;122], явно вижу, что если в пароле будут символы "[", "]" то пароль возьмёт из команд. строки неверно, и далее разбор ком. строки пойдёт неверно. Как указать параметры в таком случае?

Автор: Mikle 10.04.19, 19:34
Цитата BlackSun @
если в пароле будут символы "[", "]" то пароль возьмёт из команд. строки неверно, и далее разбор ком. строки пойдёт неверно. Как указать параметры в таком случае?

Случайно не в кавычках? chr(34).

Автор: BlackSun 10.04.19, 20:20
кавычки тоже допустимы в пароле

Автор: Akina 11.04.19, 04:21
1) Укажи полные пути для архива и файла отчёта.
2) Если нужно использовать перенаправление стандартного потока - запускай не "unrar.exe", а "cmd.exe" с параметром "/c unrar.exe ...".

Автор: MIF 11.04.19, 08:29
Укажи полный путь к test.rar и rep.txt файлам.

Автор: MIF 11.04.19, 08:35
Цитата BlackSun @
И ещё: в пароле допускаются символы ASCII[33;122], явно вижу, что если в пароле будут символы "[", "]" то пароль возьмёт из команд. строки неверно, и далее разбор ком. строки пойдёт неверно. Как указать параметры в таком случае?

Попробуй поставить backslash(\) перед скобками в теле пароля.

Автор: BlackSun 11.04.19, 09:57
Напрямую в Far написал, тоже не работает. Сменил пароль на "123". Что-то не то в формате команды, пишет неверный пароль:
UnRAR.exe e -p[123] test.rar

WinRAR скачал с оф. сайта, версия 5.70.

Добавлено
Хех, разобрался. Скобки не нужны:
UnRAR.exe e -p123 test.rar

Но я-то глянул помощь, а там:
p[password] Set password

и подумал, что скобки обозначают начало и конец пароля, а теперь сложный пароль вообще не понимает, протестил на примере 1`!@#$%^&*()-+=2. И как я понимаю, из отдельного файла с паролем пароль не может брать, например.

Добавлено
Цитата MIF @
Попробуй поставить backslash(\) перед скобками в теле пароля.

не сработало на 1\`\!\@\#\$\%\^\&\*\(\)\-\+\=2.

Добавлено
Цитата Mikle @
Случайно не в кавычках?
Сработало "1`!@#$%^&*()-+=2".

Автор: BlackSun 11.04.19, 11:03
Но в ShellExecute не работает "UnRAR.exe e -p123 test.rar >rep.txt"! А когда написал "UnRAR.exe e -p123 test.rar", заработало! ???

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)