asaworks

自分の技術備忘録と雑談

【Windows】同期してファイル起動するバッチ

f:id:asa-works:20161013115159p:plain

Windows】同期してファイル起動するバッチ

バッチファイルでシステム(access)を起動する備忘録。
だいたい汎用2パターンでまかなってます。


Case1 常に共有フォルダ(例としてZドライブとする)からローカルに上書きコピーし、ローカルのファイルを開く
▼DBとAPを分けている場合、こちらを利用しています。
ユーザーに常に新しいバージョンを提供できるので、利用頻度が高いです。

@echo off
echo testDBを開いています・・・
SET FILE1="Z:\share\testsystem\testDB.mdb"
SET FILE2="C:\Users\testuser\Desktop\testsystem\testDB.mdb"
    copy /Y %FILE1% %FILE2%
    start "" %FILE2%
exit /B


Case2 FileAとFileBの更新タイムスタンプを確認、新しいほうと同期を取り、
開くのはローカルファイル
▼Case1とは違い、ひとつのファイルで簡潔している場合、こちらを利用しています。
利用頻度の高いシステムや複数人で使う場合、データ不整合が起きる可能性が多いので注意!ちょっと使い勝手が悪いかも。

@echo off
echo testDBを開いています・・・
SET FILE1="Z:\share\testsystem\testDB.mdb"
SET FILE2="C:\Users\testuser\Desktop\testsystem\testDB.mdb"
REM 更新日時
SET TIMESTAMP1=""
SET TIMESTAMP2=""
REM 更新日時取得
    FOR %%a IN (%FILE1%) DO SET TIMESTAMP1=%%~ta
    FOR %%b IN (%FILE2%) DO SET TIMESTAMP2=%%~tb
REM 更新日時比較
    IF "%TIMESTAMP1%" == "%TIMESTAMP2%" (
    REM 同じ
        start "" %FILE1%)
    ELSE (
        IF "%TIMESTAMP1%" GTR "%TIMESTAMP2%" (
        REM ファイル1の方が新しい
            start "" %FILE1%)
        ELSE (
        REM ファイル2の方が新しい
            copy /Y %FILE2% %FILE1%
            start "" %FILE1%
            )
        )
exit /B


Case2は色々と課題アリ。一人で作業するファイルに使ってることが多いです。
Case1を利用するためにAccessといえど、APとDBを分けておくほうが
メンテしやすくて好みだなぁ~~~