• ベストアンサー

ファイルコピーの自動化

このような要望があるんですが、そんなわがままなソフトってありますでしょうか? 条件を書きますね。 (1)毎日スキャンする画像が一つのフォルダAに溜まってゆきます (2)それをフォルダBにバックアップのようにコピーしたい。毎晩1回でよい (3)フォルダBの中は「2014/03/15スキャン分」というように日付別にフォルダーが生成されるようにしたい すごくシンプルな要求でしょう?(3)がミソなんですが、どうでしょう?

質問者が選んだベストアンサー

  • ベストアンサー
noname#252332
noname#252332
回答No.3

------------------------------------------------------------- setlocal enabledelayedexpansion rem ECHO off dir "G:\A\" > dlist.txt FOR /F "delims=" %%d IN (dlist.txt) DO ( set verDir=%%d if "!verDir:~21,5!"=="<DIR>" ( @ECHO !verDir:~21,5! @ECHO !verDir:~36! rem pause dir "G:\A\"!verDir:~36! > list.txt FOR /F "delims=" %%a IN (list.txt) DO ( set verDate=%%a @ECHO !verDate:~0,4!!verDate:~5,2!!verDate:~8,2! @ECHO !verDate:~36! @ECHO !verDate:~-3! if "!verDate:~-3!"=="JPG" ( if not exist "G:\B\!verDate:~0,4!!verDate:~5,2!!verDate:~8,2!スキャン分!" md "G:\B\!verDate:~0,4!!verDate:~5,2!!verDate:~8,2!スキャン分!" if not exist "G:\B\!verDate:~0,4!!verDate:~5,2!!verDate:~8,2!スキャン分\!verDate:~36!" copy "G:\A\!verDir:~36!\!verDate:~36!" "G:\B\!verDate:~0,4!!verDate:~5,2!!verDate:~8,2!スキャン分!" ) ) ) ) rem pause -------------------------------------------------------------  外側にサブディレクトリを探すループを作りました。作成するディレクトリ名の"_"を消しました。

pluto1991
質問者

お礼

ありがとうございます! すごいですね!

その他の回答 (3)

  • naoto0216
  • ベストアンサー率46% (183/391)
回答No.4

フォルダAには数日分の画像が混在してるのでしょうか? で、その中から、その日の溜まった分だけコピー(バックアップ)するってことですか?

pluto1991
質問者

お礼

ありがとうございます。

noname#252332
noname#252332
回答No.2

 下のテキストをメモ帳に貼り付け、拡張子をBATとして保存します。たとえばファイル名AutoCopy.batなど。このバッチファイルを実行することで、GドライブのAフォルダの中のJPGファイルをBフォルダへ日付名のサブフォルダ付きでコピーします。Bフォルダは初回実行前に作成しておいてください。試運転で問題なければ最後の行のpauseを削除してもいいです。  一日一回実行する方法は、コントロールパネルのタスクスケジューラで決まった時刻に実行させるか、Windowsの起動時に自動で実行させるか、下のバッチファイルの最後の行に shutdown -s -t 0 を書いてWindowsの終了をこのバッチファイルで行うか、などの方法があります。スケジューラの指定時刻にPCが動いていないことを考慮するとWindowsに起動時、終了時の方法と一定時刻を両方行う必要があります。 ----------------------------------- setlocal enabledelayedexpansion ECHO off dir "G:\A\" > list.txt FOR /F "delims=" %%a IN (list.txt) DO ( set verDate=%%a @ECHO !verDate:~0,4!_!verDate:~5,2!_!verDate:~8,2! @ECHO !verDate:~36! @ECHO !verDate:~-3! if "!verDate:~-3!"=="JPG" ( if not exist "G:\B\!verDate:~0,4!_!verDate:~5,2!_!verDate:~8,2!スキャン分!" md "G:\B\!verDate:~0,4!_!verDate:~5,2!_!verDate:~8,2!スキャン分!" if not exist "G:\B\!verDate:~0,4!_!verDate:~5,2!_!verDate:~8,2!スキャン分\!verDate:~36!" copy "G:\A\!verDate:~36!" "G:\B\!verDate:~0,4!_!verDate:~5,2!_!verDate:~8,2!スキャン分!" ) ) pause -----------------------------------

pluto1991
質問者

お礼

重ね重ねすみませんが、A側のフォルダもAの中に 201501 201502 201503 というように月別のフォルダに分かれていたのでした。 ちょっと辛いですね。

pluto1991
質問者

補足

ありがとうございます! これはスマートだと思い試したのですが、うまくいかず、悩んだ末にJPG を jpgに変えたらうまくいったのでした。 もうひとつおしえてほしいのですが、生成されるフォルダ名を 20150317 というシンプルなものにしたいのですが、どうしたらよいでしょうか。

  • boogeyman
  • ベストアンサー率35% (163/462)
回答No.1

フリーのバックアップソフト「BunBackup」 http://homepage3.nifty.com/nagatsuki/bunbackup/ の「世代管理」機能を使えば出来そうです。 (1) [設定]→[機能表示設定]→[世代管理]にチェックを入れる。 (2) バックアップ項目(タイトル、バックアップ元、バックアップ先)を作成する。 (3) タイトルを選択して、[変更]をクリックする。 (4) [詳細]→[世代管理]で[世代管理する]にチェックを入れる。 (5) [フォルダーフォーマット]を適宜に編集(例えば「yyyy/mm/ddスキャン分」)する。

pluto1991
質問者

お礼

ありがとうございます。 こちらも試してみますね。

関連するQ&A