【bat】フォルダの末尾に日付を追加してバックアップ

作業フォルダの末尾に日付を追加してバックアップします。
設計や開発時にファイルサーバーやSVNサーバが使えない場合、
日々のバックアップで利用しました。

@ECHO OFF
REM コピーします。
SET DIR_NAME=%date:~0,4%%date:~5,2%%date:~8,2%
SET DIR_FULL_NAME=D:\test_%DIR_NAME%

REM ディレクトリを作成する。実行結果をNULに流し、標準エラー出力および標準出力とする。
MKDIR %DIR_FULL_NAME% > NUL 2>&1
XCOPY /Y /D /E C:\Users\ユーザ名\Desktop\test %DIR_FULL_NAME%
REM /Y:同名のファイルが存在する場合、上書きの確認を行わない
REM /D:コピー先に同名のファイルが存在する場合に更新日が新しいファイルのみコピーする
REM /E:ファイルが存在しなくてもディレクトリごとコピーする
REM /EXCLUDE:file nameを使うとコピー除外もできる

【bat】エビデンスの取得効率化(全ケース)

少しでもエビデンスの取得を効率化するために、
下記手順でテストを行うことを想定。
今回は全ケースを一括実行します。

  1. 01_BEFORE_UT.batを実行
  2. テスト実行
  3. 02_AFTER_UT.batを実行

DBはDB2としています。

  • 01_BAFORE_UT.bat

    @ECHO OFF
    REM ケースごとのフォルダは作成済とします。
    REM コマンドプロンプトを立ち上げ、「db2cmd 01_BAFORE_UT.bat」で実行します。
    
    REM *************************************************************
    REM  DB設定(各自の設定に変更してください。)
    REM *************************************************************
    SET SERVER_I=XXXXX
    SET USER_ID=YYYYY
    SET USER_PASS=ZZZZZ
    
    REM *************************************************************
    REM  DB2接続
    REM    -t:SQLファイル内のセミコロンをステートメント終了文字とする。
    REM    -v:コマンドテキストを標準出力にエコーする。
    REM *************************************************************
    db2 -tv connect to %SERVER_ID% user %USER_ID% using %USER_PASS%;
    
    REM *************************************************************
    REM  エビデンスフォルダ設定
    REM    /b:フルパスを表示しない。
    REM    /ad:フォルダー名のみ表示する。
    REM *************************************************************
    DIR /b /ad > file_list.txt
    SETLOCAL ENABLEDELAYEDEXPANSION
    FOR /f %%a IN (file_list.txt) DO (
        SET EVI_DIR=%%a
        SET SQL_OUTPUT=!EVI_DIR!\10_SQL_LOG_Before
        MKDIR !SQL_OUTPUT!
        ECHO !SQL_OUTPUT!
    
        REM *************************************************************
        REM  SQL実行
        REM    -t:SQLファイル内のセミコロンをステートメント終了文字とする。
        REM    -v:コマンドテキストを標準出力にエコーする。
        REM    -f:ファイル名を指定する。SQL文をファイルから読み込む。
        REM *************************************************************
        db2 -tvf select_AAA.sql > %SQL_OUTPUT%\select_AAA.log
    )
    ENDLOCAL
    DEL file_list.txt
    
    REM *************************************************************
    REM  DB2切断
    REM *************************************************************
    db2 connect reset
    
  • 02_AFTER_UT.bat
    ログフォルダの作成とログファイルの取得を追加する。

【bat】エビデンスの取得効率化

少しでもエビデンスの取得を効率化するために、
下記手順でテストを行うことを想定。

  1. 01_BEFORE_UT.batを実行(第1引数にフォルダ名(ケース番号)を指定)
  2. テスト実行
  3. 02_AFTER_UT.batを実行(第1引数にフォルダ名(ケース番号)を指定)

DBはDB2としています。

  • 01_BAFORE_UT.bat

    @ECHO OFF
    REM 実行時の第1引数にエビデンス用のフォルダ名(ケース番号)を指定してください。
    REM コマンドプロンプトを立ち上げ、「db2cmd 01_BAFORE_UT.bat フォルダ名」で実行します。
    
    REM *************************************************************
    REM  エビデンスフォルダ設定
    REM *************************************************************
    SET EVI_DIR=%1
    SET SQL_OUTPUT=%EVI_DIR%\10_SQL_LOG_Before
    MKDIR %EVI_DIR%
    MKDIR %SQL_OUTPUT%
    
    REM *************************************************************
    REM  DB設定(各自の設定に変更してください。)
    REM *************************************************************
    SET SERVER_I=XXXXX
    SET USER_ID=YYYYY
    SET USER_PASS=ZZZZZ
    
    REM *************************************************************
    REM  DB2接続
    REM    -t:SQLファイル内のセミコロンをステートメント終了文字とする。
    REM    -v:コマンドテキストを標準出力にエコーする。
    REM *************************************************************
    db2 -tv connect to %SERVER_ID% user %USER_ID% using %USER_PASS%;
    
    REM *************************************************************
    REM  SQL実行
    REM    -t:SQLファイル内のセミコロンをステートメント終了文字とする。
    REM    -v:コマンドテキストを標準出力にエコーする。
    REM    -f:ファイル名を指定する。SQL文をファイルから読み込む。
    REM *************************************************************
    db2 -tvf select_AAA.sql > %SQL_OUTPUT%\select_AAA.log
    
    REM *************************************************************
    REM  DB2切断
    REM *************************************************************
    db2 connect reset
    
  • 02_AFTER_UT.bat

    @ECHO OFF
    REM 実行時の第1引数にエビデンス用のフォルダ名(ケース番号)を指定してください。
    REM コマンドプロンプトを立ち上げ、「db2cmd 02_AFTER_UT.bat フォルダ名」で実行します。
    
    REM *************************************************************
    REM  エビデンスフォルダ設定
    REM *************************************************************
    SET EVI_DIR=%1
    SET SQL_OUTPUT=%EVI_DIR%\20_SQL_LOG_After
    SET LOG_OUTPUT=%EVI_DIR%\30_BATCH_LOG
    MKDIR %SQL_OUTPUT%
    MKDIR %LOG_OUTPUT%
    
    REM *************************************************************
    REM  DB設定(各自の設定に変更してください。)
    REM *************************************************************
    SET SERVER_I=XXXXX
    SET USER_ID=YYYYY
    SET USER_PASS=ZZZZZ
    
    REM *************************************************************
    REM  DB2接続
    REM    -t:SQLファイル内のセミコロンをステートメント終了文字とする。
    REM    -v:コマンドテキストを標準出力にエコーする。
    REM *************************************************************
    db2 -tv connect to %SERVER_ID% user %USER_ID% using %USER_PASS%;
    
    REM *************************************************************
    REM  SQL実行
    REM    -t:SQLファイル内のセミコロンをステートメント終了文字とする。
    REM    -v:コマンドテキストを標準出力にエコーする。
    REM    -f:ファイル名を指定する。SQL文をファイルから読み込む。
    REM *************************************************************
    db2 -tvf select_AAA.sql > %SQL_OUTPUT%\select_AAA.log
    
    REM *************************************************************
    REM  DB2切断
    REM *************************************************************
    db2 connect reset
    
    REM *************************************************************
    REM  ログファイル取得
    REM *************************************************************
    copy \\サーバーホスト名\12345\xxxx.log %LOG_OUTPUT%
    

【bat】WinBatで自動ログイン

ファイルサーバにログインする際、接続情報を毎回手打ちして、
ログインするのが面倒なので、自動ログインします。

デスクトップでも好きな場所に「ファイル名.bat」ファイルを作成します。

ファイルの中身を記載します。

@echo off
SET COMMON_USR=ユーザ名
SET COMMON_PASS=パスワード

echo ホスト名ログイン中
net use ホスト名/ディレクトリ名 /USER:%COMMON_USR% %COMMON_PASS%

pause

接続できない場合、接続情報が残ってしまっていることがあるので、
コマンドプロンプト上で下記コマンドで削除します。

net use ホスト名/ディレクトリ名 /delete