2017-07-17 6 views
0

私は2つのネットワーク共有ドライブを持っています:DriveADriveBです。最後の変更または作成日に基づいてあるネットワーク共有から別のネットワーク共有にファイルをコピーするバッチスクリプト

あり、日常的にDRIVEAで生成されます2つのファイルがある、と私はDriveB/Folder1に/ FILEADriveB/FOLDER2/FILEB日常に最新のファイルをコピーします。

私は作成日に基づいてファイルをコピーすることができますここで誰もが私にソリューションを提供していただけます。

  1. をコピーFILEA(作成日:17JulyDriveB/Folder1のに
  2. コピーFILEB(作成日:17JulyDriveB/FOLDER2から

解決策を考え出しましたが、「今日の日付」に基づいてファイルをコピーします。

SET [email protected] SET usernameDOMAIN=11111111 SET [email protected] net use "\\111.444.222.777\FOLDER" /USER:%usernameID% %password% /persistent:no set source=\\222.111.333.444\FOLDER\FOLDER2\Report_ net use "\\DOMAIN\storage\2012-0151_hms_ux\Hadoop\LiveDataLandingZoneDWH" /user:[email protected] [email protected] /persistent:no set dest=\\code1\storage\2012-0151_hms_ux\Hadoop\LiveDataLandingZoneDWH\Input\Report\Report_ for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined MyDate set MyDate=%%x set today=%MyDate:~0,4%%MyDate:~4,2%%MyDate:~6,2% echo %today% :copy copy "%source%%today%0700.csv" "%dest%%today%0700.csv" IF ERRORLEVEL 0 goto disconnect goto end pause :disconnect goto end pause :end pause

EDIT 1:

今私は、日付16/7月/ 2017上でファイルをコピーするには、以下のコマンドを使用しています: 私は動的に/D:m-d-yを提供することができますどのようにxcopy C:\Users\Desktop\report\ActualHRC_*.csv C:\Users\Downloads /D:07-16-2017 pause

?つまり、変数にはm,dyが必要です。

ありがとうございます!

答えて

1

あなたは物事が複雑すぎると思います。非常に簡単な解決策があります:xcopy /Y/D

xcopy /?と入力すれば、すべてのオプションが表示されます。 /Dオプションについては、

指定した日付以降に変更されたファイルをコピーします。 日付が指定されていない場合は、 ソース時刻が宛先時刻より新しいファイルのみをコピーします。

robocopyもWindowsに組み込まれている、もあり、さらに多くのオプションを提供していますし、UNCパス名を使用してネットワーク共有にネットワーク共有からコピーする容疑者が可能です。 (ドライブマッピングは必要ありません)

+0

クイック返信をいただきありがとうございます。私は今すぐそれを試してみます –

+0

私のソースには、fileA_201707170070.txt、fileB_201707170070.txtという名前のファイルが含まれています。 しかし、ここではもっと複雑になり、ファイル名のタイムスタンプはいつか変更され、1時間か2分増分されます。この複雑さにどのように直面するのですか? –

+0

このような複雑さに対処する必要がないように配置することが最善です。ファイルには既に作成日/変更日の属性があるため、この情報をファイル名に複製することは、ファイル名の衝突を避けるためにのみ有効です。それは他の何かのために頼るべきではありません。xcopyの '/ D'パラメータは、コピー先に存在しないファイル、または存在する場合は新しいファイルをコピーし、新しい日付の場合にのみコピーします。デスティネーションから古いファイルを削除する場合は、最後に削除した日付を保存し、 '/ D:m-d-y'でそれを使用する必要があります。 –

関連する問題