同一フォルダ内にある、名前の違う2つのテキストファイルの内容を定期的に同期するツール・方法を紹介してください。

随時内容の変わるテキストファイルAを、1時間に1回を目安に同一フォルダ内のテキストファイルBにバックアップします。Bは1時間おきに上書きされます。時計の秒針と時針のような関係です。
諸般の事情で「同一フォルダ内」は動かせないルールとなっています。
従来は人が「名前をつけて保存」していましたが、つまらない作業なので無人化したいのです。
環境はWindowsXPで、当該PCはWWWやLANとの接続が禁止されており、電源ケーブルしかつながってません。その代わりソフトウェアの導入はほぼ自由です。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2009/10/09 17:40:22
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:HALSPECIAL No.1

回答回数407ベストアンサー獲得回数86

ポイント1000pt

ファイルをコピーするスクリプトです。

テキストファイルに貼り付けて、ファイル名とフォルダを書き替え

ファイルコピー.vbs

のようなファイル名で保存します。(拡張子をvbsにする事)

そして、ウィンドウズのタスクに登録すればOKです。


Option Explicit
Const COPY_FROM = "コピー元.txt"
Const COPY_TO   = "コピー先.txt"
Const TARGET_FOLDER = "D:\Test"

Dim fso
Dim copyFrom, copyTo
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
copyFrom = fso.BuildPath(TARGET_FOLDER, COPY_FROM)
copyTo   = fso.BuildPath(TARGET_FOLDER, COPY_TO)
If fso.FileExists(copyFrom) = False Then
    Set fso = Nothing
    WScript.Quit
End If
fso.CopyFile copyFrom,copyTo,True      '(上書き)
Set fso = Nothing


タスクは、時間間隔でのスケジュールはできなかったと思いますので、日単位でのスケジュールを8個とか12個とか用意すれば良いでしょう。

id:sample2

どうもありがとうございます。試してみます。

……うまくいきました! バッチリです。これでもう、つまらないことで叱られずに済みます。

2つのフォルダの同期をとるツールはたくさんあるのに、どうして2つのファイルの同期をとるツールがないのでしょうね。そういう需要って、ほとんどないのかなあ。もしそういうツールがたくさんあれば、例えばブログ普及以前でも、「日記サイトのトップページと過去ログを同時に更新する」なんて簡単なことだったでしょうに。

2009/10/09 17:39:59
  • id:HALSPECIAL
    HALSPECIAL 2009/10/09 18:34:29

    補足
    id:ken3memomemoさんのトラックバックにあるとおり、本当は、DOSコマンド1行で可能と思います。

    あと、気になるところなのですが、
    ファイルの編集中にファイルコピーが実行された場合にエラーメッセージが表示されてしいます。

    fso.CopyFile copyFrom,copyTo,True '(上書き)
    の行の前に、
    On Error Resume Next
    と入れておいてください。

    ファイルの編集中にファイルコピーが実行された場合にエラーを無視します。


    大量のポイントありがとうございました。

  • id:sample2
    追加情報ありがとうございます!

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません