2014-11-20 5 views
0

У меня есть файл Nirmal.zip на диске E Предположим, что я извлекаю только одно имя файла «Nirmal» и создаю из него папку. Теперь существует папка с именем Nirmal и zip-файл с именем Nirmal.zip Мне нужно извлечь содержимое Nirmal.zip и поместить его во вновь созданную папку Nirmal.Разархивируйте файл с помощью пакетного сценария

Как сделать выше, используя пакетные сценарии

+1

Пробовали ли вы '7z.exe', версия командной строки свободной [7-Zip] (http://www.7-zip.org)? – JosefZ

+0

@NirmalAnand Если мой ответ был полезен, отметьте его как принятый. [См. Эту страницу] (http://meta.stackexchange.com/questions/5234/) для объяснения того, почему это важно. – rojo

ответ

1

Windows, не включает в себя unzip.exe или любой другой подобный вид консольного исполняемого файла для распаковки файлов. Вы можете записать его с помощью Shell.Application с JScript или VBscript, или даже PowerShell, если хотите.

В духе тщательности, вот партия Windows/JScript гибридный сценарий, который делает то, что вы спросите:

@if (@[email protected]) @end /* 

:: unzip.bat 
:: usage: unzip.bat zipfile.zip 
:: extracts zipfile.zip to .\zipfile\ 

:: begin batch portion 

@echo off 
setlocal 

if "%~1"=="" (
    echo Usage: %~nx0 filename.zip 
    goto :EOF 
) 

cscript /nologo /e:jscript "%~f0" "%~f1" 

echo(
echo Unzipping complete. 

goto :EOF 

:: end batch portion 
:: begin JScript portion */ 

// https://gist.github.com/889769 
// slightly modified by rojo for http://stackoverflow.com/a/27049936/1683264 
function unzip(zipfile, unzipdir) { 
    var fso = new ActiveXObject('Scripting.FileSystemObject'), 
     shell = new ActiveXObject('Shell.Application'), 
     dst, zip; 

    if (!unzipdir) unzipdir = '.'; 

    if (!fso.FolderExists(unzipdir)) fso.CreateFolder(unzipdir); 

    dst = shell.NameSpace(fso.getFolder(unzipdir).Path); 
    zip = shell.NameSpace(fso.getFile(zipfile).Path); 

    for (var i=0; i<zip.Items().Count; i++) { 
     try { 
      if (fso.FileExists(zipfile)) { 
       WSH.Stdout.Write('Unzipping ' + zip.Items().Item(i) + '... '); 
       dst.CopyHere(zip.Items().Item(i), 4 + 16); 
       WSH.Echo('Done.'); 
      } 
     } 
     catch(e) { 
      WSH.Echo('Failed: ' + e); 
     } 
    } 
} 

var zipfile = WSH.Arguments(0), 
dest = zipfile.replace(/\.\w+$/, '\\'); 

unzip(zipfile, dest); 
Смежные вопросы