2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« ZIPファイルを作成/追加/置換するバッチファイル(その2) | トップページ | ZIPファイルの中身を削除するバッチファイル(その2) »

2008年6月14日 (土)

ZIPファイルを展開するバッチファイル

IE7に対応。

ExtractZIP.CMD ZIPファイル [ファイルまたはフォルダ名...]

@if(0)==(0) ECHO OFF
CScript.exe //NoLogo //E:JScript "%~f0" %*
GOTO :EOF
@end
var Usage="Usage: ExtractZIP.CMD ZIPfile [files...]";
if(WScript.Arguments.Count()<1){
  WScript.Echo(Usage);
  WScript.Quit();
}
var ZIPfile=WScript.Arguments.Item(0);
var fso=new ActiveXObject("Scripting.FileSystemObject");
if(fso.GetExtensionName(ZIPfile).toUpperCase()!="ZIP"){
  WScript.Echo("Invalid Extension Name -",ZIPfile);
  WScript.Quit();
}
if(!fso.FileExists(ZIPfile)){
  WScript.Echo("ZIP file not found. -",ZIPfile);
  WScript.Quit();
}
ZIPfile=fso.GetAbsolutePathName(ZIPfile);
//IE7以降も可
var Shell=new ActiveXObject("Shell.Application");
var Path=Shell.NameSpace(ZIPfile).Self.Path;
Shell.ShellExecute("explorer.exe",ZIPfile,null,null,0);
x:while(true){
  for(var k=Shell.Windows().Count;k>0;k--){
    var ie=Shell.Windows().Item(k-1);
    if(! ie.Visible && "Folder" in ie.Document && ie.Document.Folder.Self.Path==Path) break x;
  }
  WScript.Sleep(100);
}
//var ie=new ActiveXObject("InternetExplorer.Application");//IE7以降ダメ
//var ie=GetObject("new:{C08AFD90-F2A1-11D1-8455-00A0C91F3880}");//IE7以降も可
//ie.Navigate(ZIPfile);
while(ie.Busy||ie.ReadyState!=4) WScript.Sleep(100);
var Shell=ie.Document.Application;
var zFolder=ie.Document.Folder;
if(WScript.Arguments.Count()<2){
  var dFolder=Shell.NameSpace(fso.GetAbsolutePathName(""));
  dFolder.CopyHere(zFolder.Items());
}else if(WScript.Arguments.Count()==2 && WScript.Arguments.Item(1).charAt(WScript.Arguments.Item(1).length-1)=='\\'){
  var dFolder=Shell.NameSpace(fso.GetAbsolutePathName(WScript.Arguments.Item(1)));
  if(dFolder){
    dFolder.CopyHere(zFolder.Items());
  }else{
    WScript.Echo(WScript.Arguments.Item(1),"- Not Found.");
  }
}else{
  for(var k=1;k<WScript.Arguments.Count();k++){
    var FolderName=fso.GetParentFolderName(WScript.Arguments.Item(k));
    var FileName=fso.GetFileName(WScript.Arguments.Item(k));
    var dFolder=Shell.NameSpace(fso.GetAbsolutePathName(FolderName));
    if(!dFolder){
      WScript.Echo(FolderName,"- Not Found.");
      break;
    }
    var zFolderItem=zFolder.ParseName(FileName);
    if(!zFolderItem){
      WScript.Echo(FileName,"- Not Found.");
      break;
    }
    dFolder.CopyHere(zFolderItem);
  }
}
ie.Quit();
WScript.Quit();

« ZIPファイルを作成/追加/置換するバッチファイル(その2) | トップページ | ZIPファイルの中身を削除するバッチファイル(その2) »