So-net無料ブログ作成

調べ物:WSHでパスワード付きzipファイルを解凍する(UWSC併用) [プログラミング学習]

表題のような処理をしようと思って調べた。

0. 前提:
  ・UWSCはWSHスクリプトフォルダ直下のUWSCフォルダに存在する。
  ・UWSCスクリプトはUWSCと同じフォルダにある。
  ・パスワード付きzipファイルは、WSHスクリプトにドラッグ&ドロップで指定。解凍先はzipファイルと同じフォルダ。
UWSCスクリプト名:EnterPassZip.uws
  UWSCiniファイル名:EnterPassZip.ini
1. WSHでUWSCを起動する。UWSCではパスワード入力スクリプトを読み込む
  パスワードはUWSCのIniファイル関数で取得する
2. WSHでzipファイル解凍を実行する
  ※zipファイル解凍は同期処理なので、解凍が終わるまでスクリプトは実行待ちになる、はず。

WSHスクリプト:
Option Explicit

Dim objFSO
Dim ShApp
Dim WSHShell

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set ShApp = CreateObject("Shell.Application")
WSHShell.CurrentDirectory = _
  Replace(WScript.ScriptFullName, WScript.ScriptName,"")

' ************************************************
' ************************************************
' UWSC起動:
WSHShell.Run "%ComSpec% /c " & WSHShell.CurrentDirectory &"\UWSC\UWSC.exe "  _
	&WSHShell.CurrentDirectory &"\"&"UWSC\EnterPassZip.uws"


' 解凍処理実行
ExtractZipFolder (WScript.Arguments(0))

'********************************************
'********************************************
Private Sub ExtractZipFolder(strZipFileName)
  Dim objFSO
  Dim ExtractFolder
  Dim strTempFolder
  Dim objSubFolder

  'オブジェクトを作ります
  set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

  If LCase(objFSO.GetExtensionName(strZipFileName)) <> "zip" Then
    WScript.Echo("ZIP形式のみ解凍する")
    WScript.Quit()
  End If

  'フォルダを生成する
  ExtractFolder = objFSO.GetParentFolderName(strZipFileName) & "\" _ 
    & objFSO.GetBaseName(strZipFileName)

  If Not objFSO.FolderExists(ExtractFolder) Then
    objFSO.CreateFolder(ExtractFolder)
  End If

  '解凍
  With CreateObject("Shell.Application")
    .NameSpace(ExtractFolder).CopyHere _
      .NameSpace(strZipFileName).Items
  End With


  ' Temporaryフォルダ内の一時フォルダ削除
  ' Temporaryフォルダ取得
  strTempFolder = objFSO.GetSpecialFolder(2)

  ' 該当フォルダがあった場合、削除する  
  For Each objSubFolder In objFSO.GetFolder(strTempFolder).SubFolders
    if InStr(objSubFolder.Name,objFSO.GetBaseName(strZipFileName)) > 0 Then
      WScript.Echo objSubFolder.Name
    End if
  Next

End Sub

UWSCスクリプト:
Dim retPass,retClick
Dim idProg

//パスワードをINIファイルから読み込む
idProg = GETID("パスワード")
retPass = READINI( "ZIP_PASS", "PASSWORD")

//パスワードの入力ウィンドウをアクティブ化
CTRLWIN(idProg,ACTIVATE)
SENDSTR(idProg,retPass)
retCick = CLKITEM( idProg, "OK" ) 




タグ:UWSC WSH VBScript
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0