Войти

Показать полную графическую версию : [решено] JS и WinRar


ProofNah
16-10-2009, 21:37
Подскажите пожалуйста, как можно используя JS и WinRar разархивировать файл?
Пытался использовать методы run и exec, но ни чего стоящего не получилось. Я так понимаю, что нужно запустить консоль и внутри прописать необходимые данные.

Petya V4sechkin
17-10-2009, 09:19
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.Run("WinRAR.exe x имя_архива", 1, true);

ProofNah
17-10-2009, 13:52
Petya V4sechkin, спасибо.

Использую следующий код, но пишет что архив не найден. Если не использовать переменную, то все разархивируется?!


var Variable="d:\\Ar.rar d:\\Work\\";
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.Run("WinRAR.exe e"+Variable, 1, true);

amel27
17-10-2009, 14:49
пишет что архив не найден »
вставьте пробел между "e" и именем архива (var): "WinRAR.exe e ", иначе получается команда:
WinRAR.exe ed:\Ar.rar d:\Work\

ProofNah
17-10-2009, 15:02
Благодарствую!!!
Как можно добавить кавычки в пути, а то предстоит использовать полные пути в имени которых встречаются пробелы. Извиняюсь за "такие вопросы", просто везде информация об vbs, мало источников для js.

Например:

var Variable="d:\\Ar.rar d:\\Папка для разархивации\\";
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.Run("WinRAR.exe e "+Variable, 1, true);

amel27
17-10-2009, 15:08
Как можно добавить кавычки в пути»
я не знаток JS, но судя по приведенному коду, экранировать обратным слэшем: \"

ProofNah
17-10-2009, 18:01
я не знаток JS, но судя по приведенному коду, экранировать обратным слэшем: \" »
К сожалению не удалось.

Если использовать апостроф, а затем двойные кавычки, то строка формируется в двойных кавычках, но это не спасает. Т.к. пишется, что архив не найден. Может я что-то делаю не так?

var Variable=' "d:\\Ar.rar d:\\Папка для разархивации\\" ';
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.Run("WinRAR.exe e "+Variable, 1, true);


Все получилось. Спасибо всем принявших непосредственное участие в решение моей проблемы. Просто в кавычки нужно было брать каждый путь отдельно.


var Variable=' "d:\\Ar.rar" '+" "+' "d:\\Папка для разархивации\\" ';
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.Run("WinRAR.exe e "+Variable, 1, true);

Iska
17-10-2009, 18:33
Или так, как советовал amel27:
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.Run("\"c:\\Program files\\WinRar\\WinRAR.exe\" e \"C:\\Install\\На разбор\\Boot Images\\Boot Floppy\\HS Feed Diskette 1.5\\_sysdisk15.rar\" \"C:\\Песочница\\31\\\"", 1, true);
Для того, чтобы смотреть, что получается, хорошо пользовать Process Monitor (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx), установив фильтр «Process Create/…Start/…Exit».




© OSzone.net 2001-2012