ここから本文です

フォルダ内ファイルの連続圧縮方法について Aフォルダの中にa.b.cファイル B...

mak********さん

2019/5/1111:23:05

フォルダ内ファイルの連続圧縮方法について

Aフォルダの中にa.b.cファイル
Bフォルダの中にa.b.cファイル

Cフォルダの中にa.b.cファイル上記状態で、一度にフォルダごとに「フォルダの中のファイルのみ」個別圧縮できる方法はないでしょうか。

色々な連続圧縮ソフトを試しましたが、Aフォルダ内にa.b.cフォルダが入ったA.zip、Bフォルダ内に~といった感じで圧縮されるものばかりです。
そうではなく、A.zipフォルダを解凍すると、Aフォルダはなくa.b.cファイルだけある状態で連続圧縮をかけたいのですが、良い方法はないものでしょうか。

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
29
回答数:
2

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

dio********さん

2019/5/1423:23:08

Explzhで可能。
https://www.ponsoftware.com/
オプションの「単一フォルダ圧縮時に最上位フォルダより下を圧縮」にチェックを入れる必要がある。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

lin********さん

2019/5/1423:12:48

「VBScript」による回答ですので「Windows限定」です。

「A」、「B」、「C」フォルダ直上のフォルダにプログラムファイルを置いて、実行してください。

プログラムファイルの存在するフォルダ直下のすべてのフォルダの中を調べ、ファイルだけを「zip」化します。

このとき、作成する「zip」ファイルは、プログラムファイルの存在するフォルダに「A」フォルダの分は、「A.zip」、「B」フォルダの分は、「B.zip」、・・・と作成されます。

以下のプログラムを、メモ帳かテキストエディタに貼り付け、「~.vbs」という名前で保存します。

「~」の部分は、何でもかまいませんが、「.vbs」の部分は、必ず半角です。

できたプログラムを、これからファイルを圧縮したいフォルダ群の直上のフォルダに放り込んで、ダブルクリック(「シングルクリック」→「Enter」の方が確実)するだけです。

最後に「Finished!」と表示しますので、「OK」を押して、終了してください。

Option Explicit
Dim c, f, gf, sa, sf, so, zp
Set so = CreateObject("Scripting.FileSystemObject")
Set gf = so.GetFolder(so.GetParentFolderName(WScript.ScriptFullName))
Set sa = CreateObject("Shell.Application")
For Each sf In gf.SubFolders
so.CreateTextFile(gf & "\" & sf.Name & ".zip", False).Write "PK" & Chr(5) & Chr(6) & String(18, 0)
For Each f In sf.Files
With sa.NameSpace(gf & "\" & sf.Name & ".zip")
c = .Items().Count
.CopyHere sf & "\" & f.Name
Do While c = .Items().Count
WScript.Sleep 100
Loop
End With
Next
Next
Set sa = Nothing
Set gf = Nothing
Set so = Nothing
MsgBox("Finished!")

参考にしたサイトは、

http://tanlab.blog.fc2.com/blog-entry-10.html

です。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる