Robocopyには、日付を指定するための2つのオプション(maxage、minage、maxlad、minlad)があります。相対日付(n <1900)または固定日付(それ以外の場合はyyyymmddとして扱われます)です。ここに完全な構文があります。
特定の日に作成またはアクセスされたファイルを含めるため、最小/最大lad(最終アクセス日)と固定日付を使用する必要があるため、robocopy構文を使用して基準を指定しましょう
。1。昨日以降に使用されていないファイルを除外します:use / maxlad( today_date-1日)
2。今日使用されているファイルを除外します:use / minlad(today_date)
それらをまとめます:
robocopy source_dir destination_dir file_spec /maxlad:%today_minus_1% /minlad:%today%
today
そしてtoday_minus_1
変数はyyyymmdd形式の日付でなければなりません(例:20120710)-それらを取得する方法は?まあ、あなたが純粋なバッチに制約されているなら、あなたはあなたのために数学をするためのスクリプトを見つけなければならないでしょう、いくつかが利用可能です(例えばここに)または自分で書いてください。
PowerShellを使用できる場合、それは非常に簡単です。
for /f %y in ('powershell get-date ^(get-date^).adddays^(-1^) -uformat %Y%m%d') do set today_minus_1=%y
最初の変数と
for /f %t in ('powershell get-date -uformat %Y%m%d') do set today=%t
2番目の変数を取得します。
要約すると、日付変数を設定してから、robocopyを実行します(除外でそれらを使用)。/L
実際のコピーではファイルのアクセスタイムスタンプがリセットされるため、正しく機能するかどうかを確認するときにオプションを使用する価値があります。
cmd行から直接実行されたかのように与えられたすべての変数とコマンド。バッチで使用する場合は、いくつか追加する必要があります%
(おそらく、setlocalを使用するのが賢明です)。
注:私が使用しているバージョン(XP010)では、例のように負の数やスペースを使用できません