- ベストアンサー
バッチでmdbを最適化する方法とは?
- バッチでmdbを最適化したいが、ldbファイルが存在した場合の処理キャンセル方法が分からない。
- 現在は親フォルダを丸ごとバックアップし、mdbファイルを検索して最適化する方法で実行しているが、最適化の前にldbファイルの存在をチェックして処理をキャンセルしたい。
- mdbが多いため、VBAで個別に組み込むことなく一括でバックアップ・最適化を行いたい。
- みんなの回答 (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 その上で、うまくいかないようでしたら、そのとき表示されているエラーメッセージを 補足してください。
その他の回答 (1)
- pita-gora
- ベストアンサー率70% (102/145)
こんにちは >親フォルダから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
お礼
ありがとうございます。 早速試してみたのですが、CMD画面が一瞬出て消えてしまいます。 最適化はされていないようです。 上記調べてみたのですが、すいません理解できませんでした。。 "delims="は区切り文字の指定で何も入れてないから・・・? "%~dpnA.ldb" "%%~fA" これらも良く分かりませんでした。 すいません。宜しくお願いします><
補足
すいません。 再度調べなおしてバッチパラメータの存在理解しました^^; 下記のコードを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
お礼
pita-goraさん 最初から最後までありがとうございました! %%が1つなのが原因だったようです。。。 おかげさまで最適化を実現できます。 本当にありがとうございました!!