2014-11-20 2 views
0

E 드라이브에 Nirmal.zip 파일이 있습니다. 파일의 기본 이름을 "Nirmal"로 추출하여 폴더를 생성했다고 가정합니다. Nirmal이라는 폴더와 Nirmal.zip이라는 zip 파일이 있습니다. Nirmal.zip의 내용을 추출하여 새로 생성 된 Nirmal 폴더에 넣어야합니다. 일괄 스크립팅을 사용하여 파일의 압축을 풉니 다

위 사용하여 배치 스크립트

+1

당신이'7z.exe'를 시도해 봤어, 무료 [7 우편]의 명령 행 버전 : 철저의 정신

, 여기 당신이 무엇을 물어 않는 윈도우 배치/JScript의 하이브리드 스크립트입니다 (http://www.7-zip.org)? – JosefZ

+0

@NirmalAnand 제 답변이 도움이 되었다면 동의로 표시하십시오. [이것이이 페이지를 참조하십시오] (http://meta.stackexchange.com/questions/5234/) 왜 이것이 중요한지에 대한 설명. – rojo

답변

1

을 수행하는 방법에 윈도우 unzip.exe 또는 파일을 압축 해제를위한 콘솔 실행의 다른 유사한 종류가 포함되어 있지 않습니다. 원하는 경우 Shell.ApplicationJScript 또는 VBscript 또는 PowerShell으로 스크립트 할 수 있습니다.

@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); 
관련 문제