2016年10月14日金曜日

共有フォルダ内のファイルやフォルダを、それを保有するPCからZIP圧縮させるスクリプト

LANで接続された2台のPCがあり、片方はPC1、もう片方はPC2という名前だったとします。
PC1はC:\testを共有フォルダとして設定済みで、PC2からはそのフォルダを参照できます。
この時、PC2からPC1の共有フォルダ内のファイルやフォルダを圧縮する場合、普通にやると水面下では以下のような処理が行われます。

1.PC1の共有フォルダからPC2に圧縮対象のデータが全てコピーされる。
2.PC2で圧縮したデータをPC1にコピーする。

合計サイズが小さいとか、ファイルやフォルダが少ない場合はこれでも問題ありませんが、大量のファイルを圧縮したい場合はネットワークでデータをやりとりする分のロスが大きくなってきます。

それを回避するスクリプトを作成しました。




[使い方]
以下のように、スクリプトファイルと同じフォルダにPsExec.exeを保存しておきます。
PsExecの入手方法はこちらをご覧ください。



圧縮したいファイルをスクリプトファイルにドラッグ&ドロップします。



セキュリティメッセージが表示された場合は「OK」をクリックします。



このメッセージが表示されたら処理終了です。OKをクリックします。



圧縮(zip形式)フォルダーができました。



ドラッグ&ドロップするものはフォルダでもファイルでも、1個でも複数個でも混在していてもOKです。

ドロップするものが保管されている場所が共有フォルダかどうかを気にする必要はありません。(スクリプトが自動で判別します)

圧縮処理にとてつもない長さの時間が必要になるようなフォルダなどを誤ってドロップしてしまった場合は処理を中断させることも可能です。

[中断する方法]
「圧縮しています...」のウィンドウが表示されている場合は、そのウィンドウの「キャンセル」をクリックしてください。


上記以外の場合は、圧縮するアイテムと同じフォルダに「remote comp_***….wsf」というファイルが作成されていますので


そのWSFファイルを削除すると


その数秒後に以下のメッセージが表示されます。(作りかけのZIPファイルは不要なら手動で削除してください)



以下、ソース


0 件のコメント:

コメントを投稿