質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.86%

  • Windows 10

    812questions

    Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

  • VBScript

    212questions

    VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

  • WSH

    29questions

    WSH(Windows Script Host)とは、Windows上でテキストファイルに記述したJavaScriptやVBScriptなどのスクリプトを実行するホスト環境のことです。COMを通じたレジストリ操作やWMIへのアクセスが可能で、複雑な処理も行うことができます。

WSHでVBScriptを使用してファイルを圧縮する最もシンプルなアルゴリズムを教えてください。

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,653

kyosanta

score 9

WSHの世界へはファイルの一斉リネームや作業自動化が目当てで入りました。
現在は圧縮の部分を勉強中です。

そこで、様々なオンラインのリソースを拝見しましたがどれもエラー管理を含めたりや動作に一癖あるコードたちで仕組みの勉強には向きませんでした。
現在探しているのは最もシンプルな方法で圧縮できるアルゴリズムです。

-Dim objFSO = WScript.CreateObject("Scripting.FileSystemObject")"-
-Set objFile = objFSO.CreateTextFile(ZipFile, True)-

を用いてwindows標準の機能を使って圧縮を試みたいのです。
前文にもある通り純粋に圧縮の過程を学びたいので、エラー処理の部分は不要です。

また、拝見したコードの多くはZIPファイルを作成しその中にコピーしたいファイルを書き込むといったようなものですがこれが一般的でしょうか。

参考までに、WindowsPowerShellも検討してはみましたが、コマンドレット等新しく覚えるにはいささか煩雑で諦めました。
なんとかWSHでかつVBScriptを使う方向で行きたいと思っています。

よろしくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

前文にもある通り純粋に圧縮の過程を学びたいので、エラー処理の部分は不要です。

ということなので、こちら([WINDOWS] ZIPをスクリプトから実行したい)を紹介しておきます。

スクリプトからいくつかのファイルをまとめて圧縮するためのコマンドをさがしたところ、FreeBSDなどにあるzipコマンドのようなものがWindowsにはないらしい。

で、上記のリンクにもありますが、色々出回っているスクリプトの大元はどうやら、こちら(ZIPファイルを作成/追加/置換/削除/展開/表示するバッチファイル)のようです。
※紹介記事(Windows XPでコマンドラインからzip圧縮するためのスクリプト

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/03 18:53

    ありがとうございます。
    大変参考になりました。

    紹介して頂いたソース、じっくり研究させていただきます。

    キャンセル

0

ご質問からは、圧縮処理そのものというよりはアーカイブ化の流れを把握したいということのように感じました。
zip以外ですと、cab形式での対応もできるかと思います。
検索すると下記ページがありましたので紹介します。

WSHでCABファイルをつくる。
http://kmaru.hatenablog.com/entry/20060214/1139931079

リンク先はJScriptでの実装のようでしたので、VBScriptでの実装を作成されるとよいかと思います。

また、拝見したコードの多くはZIPファイルを作成しその中にコピーしたいファイルを書き込むといったようなものですがこれが一般的でしょうか。

Windows標準機能のzip圧縮を用いて、という実装であれば一般的に行われる手続きだと思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/03 17:22

    ありがとうございます。
    コードが随分すっきりしましたね。

    と言うことはzipやrarなども同じ要領で作成できそうですね。
    ZIPやrar作成に際しては紹介していただいたソースにWScript.CreateObjectのScripting.FileSystemObjectを使って作成出来るのでしょうか?
    それとも、cabのような専用のメソッドないしプログラムidで指定した特定のプログラムを使わねばならないのでしょうか?
    よろしくお願いします。

    キャンセル

  • 2017/10/03 18:42

    Windowsが提供する機能の範囲内であればWSH上の処理として記述可能な場合もありますが、そうではない場合は外部プログラムを呼び出す形となるかと思います。
    圧縮であれば7-Zipやlhaplus等のアプリケーションを利用することでの対応となります。

    キャンセル

  • 2017/10/03 19:12

    ありがとうございます!
    大変勉強になりました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.86%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    vbscriptのバイナリファイル操作について

    失礼します。 Vbscriptでバイナリファイル(base64)を操作したいのですが、お助け頂けますでしょうか? ちなみに端末へADODBは入れる事が出来ないのでMSXML.D

  • 解決済

    初心者です。Fanctionを使用して1から9までの数値を書き込む

    初心者です。Fanctionを使用して1から9までの数値を書き込む スクリプトにつきまして。 テキストへ1から9までの数値を書き込むスクリプトを 作成中です。 以下

  • 解決済

    ランタイム版AccessマクロVBSバッチからの実行方法

    前提・実現したいこと VBSバッチからaccessマクロを実行したい。 発生している問題・エラーメッセージ 開発環境にはaccess2013がインストールされていたため

  • 解決済

    VBScriptのボタン

    vbscriptをつかってシャットダウンをさせたいと思っています。 現在のソースはこちら Msg = MsgBox("シャットダウンしますか?", vbYesNo + 

  • 解決済

    VBSでdllの参照設定

    ネットで検索すると dllの参照はできないと書いてあったり、COMやActiveXの参照はできるなどの記述があり、 よくわかっていないのが現状なのです。 自作のdllを参

  • 受付中

    セル内改行を含むCSVファイルを読み込んで、分割したい

    <やりたいこと> VBScriptを使用してCSVファイルを1行ずつ読み込んで、ある列に記述された時間毎にCSVを分割したい。 ◆データ例 1行目:ID,時間,警告,備考

  • 解決済

    vbsの保存ができない。

    Wscript.StdOut.Write "Height(m) = " H = WScript.StdIn.ReadLine Wscript.StdOut.Write "Weigh

  • 解決済

    VBS 書き込みが出来ないエラー

     前提・実現したいこと CSVファイル読込ツールでのリネーム処理においてリネームが出来ない状態になっている。  発生している問題・エラーメッセージ エラー:書き込みが出来ません

同じタグがついた質問を見る

  • Windows 10

    812questions

    Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

  • VBScript

    212questions

    VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

  • WSH

    29questions

    WSH(Windows Script Host)とは、Windows上でテキストファイルに記述したJavaScriptやVBScriptなどのスクリプトを実行するホスト環境のことです。COMを通じたレジストリ操作やWMIへのアクセスが可能で、複雑な処理も行うことができます。