ファイル自動バックアップバッチプログラムの作成 – 仕様編 –

    前回の記事:ファイルサーバへファイルを自動バックアップする運用

    では、ファイルを自動バックアップして、所定のフォルダへバックアップした

    ファイルを移動させるための大まかな仕様について書きました。

    しかし、考えていくうちに、少し変わってきたので、ここで仕様を確定します。

    バッチプログラムの仕様 (確定)

    1. バッチファイル構成は「*.bat(バッチ本体) + *.exe(今回作るプログラム) + *.xml(設定用)」
    2. 作るプログラムの言語はC#。
    3. 開発環境はMicrosoft Visual Studio Community 2013
    4. 必要な設定をXMLファイルに定義して利用する ※詳細は後述の見出しの通り
    5. XMLファイルの読み出し後の定義選択はLINQを利用する
    6. ディレクトリ指定ミスやネットワーク不調によるエラーが発生した場合は、エラー処理を実施し、エラーメッセージを出力する
    7. 処理内容の区切りで必ずログファイルへメッセージを出力する(ログレベルは指定なしで、「Info」や「Error」などに相当する内容を出力) ※*.batで*.exeを実行した際のスクリーン出力をログファイル出力に切り替えることでログ出力を実現
    8. 基本的な流れはXML設定値で指定したファイルで「コピー判断 → コピー → 移動」となる
    9. 「コピー判断」はコピー元ファイルを一覧を取得し、コピー元ファイルでコピー先ディレクトリにあるか存在チェックし、ファイルが存在しないかつ、コピー元ファイルの文字列を加工してコピー先のファイル名を生成し、ファイルの存在チェックをしたときにファイルが存在しないというのを判断材料とする ※目的:誤ったコピーによる上書き禁止措置と差分コピーを実行するため
    10. コピーはXML設定値で設定したファイルのみを対象とし、上記コピー判断条件が「真」ならば実行。そうでないならば、スキップすることを伝えるメッセージを出力して、コピーを実行しない。なお、エラー処理を導入し、プログラムが強制終了しないようにする
    11. コピーが失敗したならば、エラーメッセージを出力し、処理を終了する。元のファイルには影響がないようにする
    12. 移動はコピーが終了したのち、XML設定値で設定したディレクトリの存在チェックをしたのちにディレクトリが存在しないならば、ディレクトリ作成処理をし、移動を実行する。なお、エラー処理を導入し、プログラムが強制終了しないようにする ※移動成功時は、元のディレクトリには何も残らない。移動失敗時は元のディレクトリにファイルを残す
    13. 移動が失敗したならば、エラーメッセージを出力し、処理を終了する。元のファイルには影響がないようにする
    14. すべての処理終了後、成功したことを伝えるメッセージを出力し、バッチを終了する

    4番目の仕様の詳細

    XMLファイルに定義する設定は以下の通り

    ・コピー元/移動元パス文字列

    ・コピー先パス文字列

    ・移動先パス文字列

    ・ファイル命名規則正規表現文字列 ( ファイル名=[XML設定値のファイル名]+[正規表現] となるところの「正規表現」の部分の文字列)

    ・ファイル拡張子

    ・対象ファイルの「コピー前の名前」の文字列

    ・対象ファイルの「コピー後の名前」の文字列

    次の記事では、作ったプログラムの設計(クラス分け)について説明します。

    次の記事:ファイル自動バックアップバッチプログラムの作成 – 設計編 –

     

    参考文献

    仕様を確定するに当たり参考にしたサイト

    LINQ to XMLによるファイルリーダー
    http://garafu.blogspot.jp/2014/07/linq-to-xml-xml_7.html
    http://www.pine4.net/Memo/Article/Archives/71
    http://keicode.com/dotnet/linq-to-xml-101-2.php

    正規表現
    http://dobon.net/vb/dotnet/string/regex.html

    ディレクトリ列挙など
    https://code.msdn.microsoft.com/windowsdesktop/FileInfo-tips-d585ee2e

    C#コーディング規約
    https://msdn.microsoft.com/ja-jp/library/ff926074.aspx
    http://jikkenjo.net/309.html

    バッチコマンド
    http://d.hatena.ne.jp/language_and_engineering/20130502/PatternsOfMSDOSorBAT
    http://fpcu.on.coocan.jp/dosvcmd/batch.htm#param

     

     

     

    似たカテゴリーの投稿