みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBS 任意の名前でzip内のファイルを解凍したい

VBSを使ってzipファイルの解凍を行う際に、解凍ファイルを任意の名前にしたいです。


現在以下の内容のvbsでzipファイルを解凍しています。

---------------------------------------------------------------
zippath = "C:\新しいフォルダー\test.zip"
savepath = "C:\新しいフォルダー"

Set objShell = CreateObject("Shell.Application")
Set FilesInZip = objShell.NameSpace(zippath).items
Set objFolder = objShell.NameSpace(savepath)

If (Not objFolder Is Nothing) Then
objFolder.CopyHere FilesInZip, FOF_NOCONFIRMATION + FOF_SILENT
End If

---------------------------------------------------------------

解凍自体は上手くいってるのですが、解凍したファイルの名前が統一されていない為、次の処理でスマートにファイルの指定ができません。

このファイル名を、
・zipファイルと同じ名前(例えば「test.zip」なら「test.xlsx」など)にする。
・任意の名前で解凍する。
ことは出来ないでしょうか。


ご回答よろしくお願いします

投稿日時 - 2017-07-26 16:35:38

QNo.9356124

すぐに回答ほしいです

質問者が選んだベストアンサー

>解凍されるファイル(zipの中身)の名前は実行する度に変わり
zipの中身のファイル名 = FilesInZip.Item(0).Name
でファイル名を取得できませんか

投稿日時 - 2017-07-28 11:36:51

お礼

無事解決することができました!

解凍するときに新しい名前を指定するのではなく、
zip内のファイル名を取得して、解凍後に名前を変更するんですね。


最終的にこのようなコードになりました↓

---------------------------------------------------------------

zippath = "C:\新しいフォルダー\test.zip"
savepath = "C:\新しいフォルダー"

Set objShell = CreateObject("Shell.Application")
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set FilesInZip = objShell.NameSpace(zippath).items
Set objFolder = objShell.NameSpace(savepath)

'zip内のファイル名取得
FileName = FilesInZip.Item(0).Name

'解凍
If (Not objFolder Is Nothing) Then
objFolder.CopyHere FilesInZip, FOF_NOCONFIRMATION + FOF_SILENT
End If

'解凍したファイル名変更
objFSO.MoveFile savepath&"\"&FileName,savepath&"\解凍ファイル.xlsx"

---------------------------------------------------------------



回答して頂いた皆さん、
ありがとうございます!

投稿日時 - 2017-07-28 12:57:43

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

解凍までできているようなので、あとはリネームすればいい。
ファイル名変更など、ファイル操作には
FileSystemObjectを使えばいいです。
set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.MoveFile("元の名前","新しい名前")

投稿日時 - 2017-07-28 04:01:02

補足

失礼しました、言葉がまりませんでした。
解凍されるファイル(zipの中身)の名前は実行する度に変わり、解凍するまで分かりません…

その名前を毎回統一性のあるものに変更できたらなあ。という話でした。
これは難しいですかね…?

投稿日時 - 2017-07-28 07:02:43

お礼

回答ありがとうございます(*^^*)

投稿日時 - 2017-07-28 07:02:37

あなたにオススメの質問