プロが教える店舗&オフィスのセキュリティ対策術

在宅勤務で毎日、zipファイルにPWを入れてフォルダを何度もクリックして業務に使用するexeを起動しているため、なんとか自動で起動できないか、ExcelVBAを調べていたところ、バッチファイルを作成すると早いという記事を見ました。バッチファイルの知識は0ですが検索して下記のファイルで実行したところ、PW解除と、かなり処理時間がかかってエラーで止まります。どのように書いたらよいのかぜひ教えていただきたいです。
@echo off
for /r %%i in (*.zip) do "C:\Program Files\7-Zip\7z.exe" x -pxxx -o%%~pi %%i
pause
start D:¥aaa.zip\bbb\ccc\CL\app\bin\001.exe & 001.exe & 003.exe としたところ
途中で ?(Y)es/(N)o/(A)lways/(S)kip all/A(u)to rename all/(Q)uit? と出るので2回uを入れてエンターし、なにかキーを押してください。に、エンターを押下すると、一瞬起動されかけますが
「EC40001システムエラーが発生しました。システム管理者に連絡してください。」とでて開くことができませんでした。
クリックしてフォルダを開く順番は D:¥aaa.zip\bbb\ccc\CL\app\bin\002.exe です。
各フォルダにはフォルダやファイルがかなり入っていて、最後のフォルダにはexeファイルが3つありましたので、&で繋げて入れました。
シャットダウン時にDの中がすべて削除されるような設定となっているため、毎回zipフォルダを共有ドライブから多分仮想のDドライブにコピーしてから開いていますので、バッチファイルを一緒にDドライブにコピーしてから、実行するようにできれば大変助かります。(バッチファイルのショートカットをデスクトップに置いて実行できればなお、有難いです。)どうぞよろしくお願いいたします。

質問者からの補足コメント

  • うーん・・・

    早速ご回答いただきましてありがとうございます。残念ですが共有フォルダへの変更はNGだと思います。それと、下記exeの前までで実行すると
    start D:¥aaa.zip\bbb\ccc\CL\app\bin\ exeまでのフォルダはきちんと開けるのですが、PWは解除できているという認識は間違っているのでしょうか。よろしくお願いいたします

      補足日時:2022/01/13 12:53

A 回答 (5件)

以下の行が間違っています。


start D:¥aaa.zip\bbb\ccc\CL\app\bin\001.exe & 001.exe & 003.exe

対処法としては、解凍時に出力先フォルダを指定して、指定したフォルダに出来た○○.exeをstartコマンドに渡してあげる必要があります。

D:\aaa.zip\配下は、aaa.zipを一時的に展開した仮想フォルダです(rinkun様の回答の通りです)

一行目の
"C:\Program Files\7-Zip\7z.exe" x -pxxx -o
は7zip.exeという解凍ソフトをコマンドで実行しているのですが、このとき、解凍先フォルダを指定してあげることが可能です。

例:"C:\Program Files\7-Zip\7z.exe" x -y -pxxx -oC:\tmp\ C:\testdata.zip

これはC:\testdata.zipをC:\tmp\配下に解凍するコマンドになります。("-o"で出力先を指定できます。ちなみに、-yは「Yes/No」を自動でYesにするオプションです。-pがパスワードを指定するオプションです)

上記コマンドを実行した場合、testdata.zipの中身はC:\tmp配下に解凍されますので、

start C:\tmp\test.exe

と記述することで目的のexeを実行することができます。


一度、for文を使わず、一つずつ解凍するようなバッチファイルを記述するとわかりやすいかもしれません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
アドバイスをもとに調べて色々やってみましたが、理解できていないため、うまくいきませんでした。PWは解除できまして、下記でとりあえず開き¥binが開いたらexeをクリックして起動できましたので、しばらくこちらで使ってみます。お忙しい中教えていただきありがとうございました。

@echo off
for /r %%i in (*.zip)do "C:\Program Files\7\-zip\7z.exe" x -y -pxxx -o%%~pi %%i
start D:\aaa\bbb\ccc\CL\app\bin
exit

お礼日時:2022/01/19 10:33

まず補足コメントについていうと、D:¥aaa.zip\bbb\ccc\CL\app\bin\ はDドライブ直下にあるaaa.zipというzipファイルの中の仮想フォルダ bbb\ccc\CL\app\bin\ のように思われますが、zipの暗号化は基本ファイルの中身だけなのでエクスプローラでフォルダをたどる部分はパスワードなしでできますが、バッチファイルではそのパスを認識できません。

また実際のファイルにアクセスする際にパスワードを必要とします。
それでzipは共有フォルダに置かれていて、それを手作業でDドライブ上に展開してから複数のexeを順に呼び出して実行しているということで良いですか。
共有フォルダは接続してドライブを割り当てていますか? バッチファイルはネットワークパスを扱えないので扱うにはドライブ割当てが必要です。
zipの展開先はDドライブ内ですか。
展開するzipファイルは毎回同じですか。変わりますか?

まずバッチファイル自体はCドライブの例えばデスクトップ上に置きましょう。
zipは7zipで展開するなら共有フォルダ上にあるものをDドライブ上に全展開するように基本フルパスでパラメータ指定しましょう。
質問に書いてあるバッチの記載方法だと共有フォルダがドライブ接続されていないとファイル展開できていないように思います。というか展開先フォルダを明示的に指定しないとzipファイルのフォルダ上に展開しようとするけど。
    • good
    • 0

ちなみに解凍コマンドのオプションで


-aoa
をつければ、無条件に上書きするようです。
    • good
    • 0

zipを解凍しておけば済む話では・・・。


DドライブがダメならCドライブに置いておけばいい話かと思います。
exeが毎日変更になるんですか?
    • good
    • 0

代案というかジャストアイデアですが、パスワード付きのzipファイルの解凍がネックとなっているなら、対象のexeファイルだけを取り出して、共有ドライブ上に置いておくことはNGでしょうか。


で、おそらくexe形式の状態で配置しておくと、セキュリティ的にNGだと思うので「01.exeZZZ」、「02.exeZZZ」、「03.exeZZZ」のように拡張子を変更しておけばウイルスチェックで引っかからないし、その3ファイルだけを共有ドライブからDドライブにコピーして”ZZZ”の部分を消せばexeファイルとして利用できます。
ファイル名の変更を手で実施するのが面倒であれば、"rename"コマンド用のバッチを作成すればいいかと
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!