
バッチでmdbを最適化したいのですが、ldbファイルが存在した場合の処理キャンセルが分かりません。
親フォルダ
├子フォルダ1
│├AA.mdb
│└BB.mdb
├子フォルダ2
・・・
現在は下記を実行しています。
set backdate=%date:~-10,4%%date:~-5,2%%date:~-2,2%
set logfile=\\192.168.10.15\d\ACCESSBackup\log\copyall_%backdate%.log
date /T >> %logfile%
time /T >> %logfile%
xcopy "\\192.168.10.14\ACCESS_SYSTEM" "\\192.168.10.15\d\ACCESSBackup\ACCESS_SYSTEM\" /C /D /E /R /Y >> %logfile%
for /f %%A in ('dir /b /s C:\ACCESS_SYSTEM\*.mdb') do "C:\Program Files\Microsoft Office\Office\MSACCESS.EXE" %%A /compact
上記で
親フォルダ丸ごとバックアップ
ログファイルを出力
親フォルダからmdbを全て検索し最適化
↑
この最適化の前に%%Aのファイルのldbが存在したら最適化をキャンセルさせたいのですがやり方がわかりません。
%%A→C:\ACCESS_SYSTEM\子フォルダ\AA.mdbだったら
C:\ACCESS_SYSTEM\子フォルダ\AA.ldbの存在をチェックし、あれば最適化しない。
mdbが多いので、VBAで個別に組み込まずタスクで夜中にでも一気にバックアップ・最適化したいと考えています。
どなたか知恵をお貸し下さい。
宜しくお願いいたします。
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
その上で、うまくいかないようでしたら、そのとき表示されているエラーメッセージを
補足してください。
pita-goraさん
最初から最後までありがとうございました!
%%が1つなのが原因だったようです。。。
おかげさまで最適化を実現できます。
本当にありがとうございました!!
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
この回答への補足
すいません。
再度調べなおしてバッチパラメータの存在理解しました^^;
下記のコードを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
ありがとうございます。
早速試してみたのですが、CMD画面が一瞬出て消えてしまいます。
最適化はされていないようです。
上記調べてみたのですが、すいません理解できませんでした。。
"delims="は区切り文字の指定で何も入れてないから・・・?
"%~dpnA.ldb"
"%%~fA"
これらも良く分かりませんでした。
すいません。宜しくお願いします><
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
デスクトップの画像をhtmlに表...
-
ThisWorkbookがあるフォルダ更...
-
Windows10でコマンドプロンプト...
-
Excelのハイパーリンクについて...
-
tortoiseSVNのリビジョンを戻し...
-
VB6でCSVファイルにパスワード...
-
ファイル名と同名のフォルダを...
-
EXPLORERで開いているフォルダ...
-
SHBrowseforfolderについて質問...
-
exclude xcopy 除外フォルダ指...
-
多量のファイルをフォルダに自...
-
最下層のファイルを一緒の階層...
-
フォルダにリンクを貼りたい
-
VBでフォルダをパスワードでロ...
-
VBScriptでのフォルダ指定ダイ...
-
AIX findコマンド
-
exeと同じ階層にフォルダを配置...
-
会社のネットワーク上のファイ...
-
API関数(DLL)の呼び出しにお...
-
30日前を残して過去の日付フォ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
会社のネットワーク上のファイ...
-
ファイル名と同名のフォルダを...
-
VBA フォルダ名に特定の文字を...
-
ExcelのVBAでフォルダ指定がで...
-
デスクトップの画像をhtmlに表...
-
VBA 最新のフォルダ取得
-
VBA フォルダの複数選択ができない
-
Excelのハイパーリンクについて...
-
パス名に2バイト文字(マルチバ...
-
【コマンドプロンプト】名前順...
-
【ExcelVBA】一覧表の記載に従...
-
サーバ内のフォルダ名と各フォ...
-
Wallpaper Engineでおすすめの...
-
ファイルとフォルダのどちらも...
-
Debug フォルダは消していいの?
-
Excelで指定したフォルダに保存...
-
VBプロジェクトでのフォルダ構...
-
GetAttrが原因?
-
Hitachi Embedded Workshop (HE...
おすすめ情報