• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:バッチでmdbを最適化したいのですが、ldbファイルが存在した場合の処)

バッチでmdbを最適化する方法とは?

このQ&Aのポイント
  • バッチでmdbを最適化したいが、ldbファイルが存在した場合の処理キャンセル方法が分からない。
  • 現在は親フォルダを丸ごとバックアップし、mdbファイルを検索して最適化する方法で実行しているが、最適化の前にldbファイルの存在をチェックして処理をキャンセルしたい。
  • mdbが多いため、VBAで個別に組み込むことなく一括でバックアップ・最適化を行いたい。

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

  • ベストアンサー
  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.2

#1です。 まず、 >バッチファイルで実行するとやはり一瞬CMD画面が出て消えてしまいます。 についてですが、 バッチファイルの最後に pause をいれて、コマンドプロンプトが消えないようにしましょう。 そのうえで、エラーメッセージに何が出ているか確認しましょう。 また、 >下記のコードをCMDに直接打ち込むと正常に処理が行われるのですが、 >バッチファイルで実行するとやはり一瞬CMD画面が出て消えてしまいます。 >なぜなのでしょうか・・・ CMDで直接入力するときと、バッチファイルに記入するときは"%"の記入方法が違います。 バッチファイルに記述するときは %%A のように%記号を2つ記載しないといけません。 for /f "delims=" %%A in ('dir /b /s C:\ACCESS_SYSTEM\*.mdb') do if not exist "%%~dpnA.ldb" "C:\Program Files\Microsoft Office\Office\MSACCESS.EXE" "%%~fA" /compact その上で、うまくいかないようでしたら、そのとき表示されているエラーメッセージを 補足してください。

utta
質問者

お礼

pita-goraさん 最初から最後までありがとうございました! %%が1つなのが原因だったようです。。。 おかげさまで最適化を実現できます。 本当にありがとうございました!!

その他の回答 (1)

  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.1

こんにちは >親フォルダからmdbを全て検索し最適化 >↑ >この最適化の前に%%Aのファイルのldbが存在したら最適化をキャンセルさせたいのですがやり方がわかりません。 最後のfor文の修正例です。 一応、ファイルパスやファイル名に空白が入る可能性があるので "delims=" を追加しています。ldbが存在したらキャンセルではなく、ldbが存在しなければ最適化するという記述になっています。 for /f "delims=" %%A in ('dir /b /s C:\ACCESS_SYSTEM\*.mdb') do if not exist "%~dpnA.ldb" "C:\Program Files\Microsoft Office\Office\MSACCESS.EXE" "%%~fA" /compact

utta
質問者

お礼

ありがとうございます。 早速試してみたのですが、CMD画面が一瞬出て消えてしまいます。 最適化はされていないようです。 上記調べてみたのですが、すいません理解できませんでした。。 "delims="は区切り文字の指定で何も入れてないから・・・? "%~dpnA.ldb" "%%~fA" これらも良く分かりませんでした。 すいません。宜しくお願いします><

utta
質問者

補足

すいません。 再度調べなおしてバッチパラメータの存在理解しました^^; 下記のコードをCMDに直接打ち込むと正常に処理が行われるのですが、 バッチファイルで実行するとやはり一瞬CMD画面が出て消えてしまいます。 なぜなのでしょうか・・・ for /f "delims=" %A in ('dir /b /s C:\ACCESS_SYSTEM\*.mdb') do if not exist "%~dpnA.ldb" "C:\Program Files\Microsoft Office\Office\MSACCESS.EXE" "%~fA" /compact