C/C++ ( Windows API 実装あり ) でやっています。
同期プログラム のようなものを作ろうかと思っています。
同期対象は iniファイルに記述するか、
自分用としてプログラムが指定するようなものです。
また手を付けていないですが、迷っている部分があります。
対象はプログラムが指定する方だとしても、
私の考えでは
更新先の削除 -> コピー
です。
ここまではいいのですが、問題は"更新元の決定" と "更新先の決定" です。
たとえば
C:\test\Checker\
と
リムーバブルディスク ( USB ) として
M:\Checker\
があるとします。
この"Checker"ディレクトリ内のファイルを更新するとします。
ですけど
C: -> M:
と
C: <- M:
の2通りありますね。
これをどうやって決めるかです。
たとえば、
自宅のPC ( 以下 H-PC ) に ファイルやディレクトリ ( 以下 対象 )を作成するなりインストールするなりします。
そのファイルやディレクトリを USBにコピーします。
このUSBを外出先で使用して更新があったとします。
USBを持ち帰って H-PC 内の 対象 を更新ソフトで更新します。
その更新状態のH-PCの 対象 をさらに編集します。
その状態 ( 編集後 ) を 更新ソフト で更新します。
...
というような感じです。
一応、私の知識( 聞いたことがある方法等 ) では、
■ コマンドラインで指定する方法
■ ユーザ入力による指定で決定する方法
■ ファイルやディレクトリの「更新日時」に相当するものをチェックして最新の方を更新元とする方法
です。
コマンドラインの方だと、
ファイル名すら未決定なので main.exe とします。( 例なので。 )
$rem -o = OUTPUT, -i = INPUT
$main -o 更新先 -i 更新元
のようにするとかです。
ユーザ入力... これは CUI なら cin とか gets関数とかで、GUI なら EDIT等のコントロール 等です。
更新日時を取得する方法は知らないですが、「Windows API 更新日時 取得」のように検索すればわかると思いますので、
取得方法が知りたいというわけではないです。
( 「取得できるデータと実際のデータが食い違う場合がある」等のように注意が必要な場合はその注意もですが。 )
知りたいことは、
普通はこういう場合はどういう風に元/先 を決定するのか
です。
できればダブルクリックで完了するようにしたいので、
ユーザ入力は やらないと思います。(多分。)
コマンドライン引数の場合は バッチファイルに書いておけばいいですし。ですけど、C->M と M->C の2つ用意しないといけないか、
バッチファイル内で IFで 分岐しないといけないので、ほぼユーザ入力と変わらない...
[環境等]
言語 : C/C++
Windows API: あり
コンパイラ : MinGW ( g++ )
宜しくお願い致します。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。