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ファイルの中身を直接取り出すスクリプトコンポーネント | トップページ | ZIPファイルやCABファイルの中身を直接取り出すプロトコル擬似 »

2006年9月28日 (木)

CABファイルの中身を直接取り出すスクリプトコンポーネント

Extract(CABパス名、ファイル名)

CAB.WSC
<?xml version="1.0" encoding="shift_jis"?>
<package>
<component>
<public>
<method name="Extract" dispid="0" />
</public>
<script language="VBScript"><![CDATA[
Option Explicit
Public Function Extract(Path,Name)
Dim fso
Dim Shell
Dim Folder
Dim FolderItem
Set fso=CreateObject("Scripting.FileSystemObject")
Set Shell=CreateObject("Shell.Application")
Set Folder=Shell.NameSpace(Path)
For Each FolderItem In Folder.Items()
  If LCase(fso.GetFileName(FolderItem.Path))=LCase(Name) Then Exit For
Next
Set Folder=Shell.NameSpace(fso.GetSpecialFolder(2).Path)
Folder.CopyHere FolderItem
Set FolderItem=Folder.Items().Item(Name)
Extract=fso.OpenTextFile(FolderItem.Path).ReadAll()
fso.DeleteFile FolderItem.Path
End Function
']]></script>
</component>
</package>

ZIP.WSCと微妙に違いますが、その微妙に違うところが重要です。
また、ZIP.WSCではCABが扱えませんが、CAB.WSCはZIPも扱えます。

使用例.VBS
MsgBox GetObject("script:"&WScript.ScriptFullName&"\..\CAB.WSC").Extract(WScript.ScriptFullName&"\..\tip.CAB","tip.htm")
MsgBox GetObject("script:"&WScript.ScriptFullName&"\..\CAB.WSC").Extract(WScript.ScriptFullName&"\..\tip.ZIP","tip.htm")

« ZIPファイルの中身を直接取り出すスクリプトコンポーネント | トップページ | ZIPファイルやCABファイルの中身を直接取り出すプロトコル擬似 »