1

前日に作成または変更されたファイルのみをバックパスするスクリプトを作成する方法がわかりません。したがって、25.07の15:30にスクリプトを開始すると、24.0700:00から25.0700:00の間にファイルがバックアップされます。可能であれば、robocopyを使用するのが好ましい方法です。/ maxage -1スイッチについては知っていますが、スクリプトが開始された時刻から1日経過したファイルで機能します(問題は、当日のファイルも含まれているためです)。

set source="C:\Folder1"
set destination="F:\Folder2"
robocopy %source% %destination% /z /MAXAGE: -1
4

1 に答える 1

0

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=%t2番目の変数を取得します。

要約すると、日付変数を設定してから、robocopyを実行します(除外でそれらを使用)。/L実際のコピーではファイルのアクセスタイムスタンプがリセットされるため、正しく機能するかどうかを確認するときにオプションを使用する価値があります。

cmd行から直接実行されたかのように与えられたすべての変数とコマンド。バッチで使用する場合は、いくつか追加する必要があります%(おそらく、setlocalを使用するのが賢明です)。

注:私が使用しているバージョン(XP010)では、例のように負の数やスペースを使用できませ

于 2012-07-10T16:44:41.367 に答える