私は2つのネットワーク共有ドライブを持っています:DriveAとDriveBです。最後の変更または作成日に基づいてあるネットワーク共有から別のネットワーク共有にファイルをコピーするバッチスクリプト
あり、日常的にDRIVEAで生成されます2つのファイルがある、と私はDriveB/Folder1に/ FILEAとDriveB/FOLDER2/FILEB日常に最新のファイルをコピーします。
私は作成日に基づいてファイルをコピーすることができますここで誰もが私にソリューションを提供していただけます。
- をコピーFILEA(作成日:17July)DriveB/Folder1のに
- コピーFILEB(作成日:17July)DriveB/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
,d
、y
が必要です。
ありがとうございます!
クイック返信をいただきありがとうございます。私は今すぐそれを試してみます –
私のソースには、fileA_201707170070.txt、fileB_201707170070.txtという名前のファイルが含まれています。 しかし、ここではもっと複雑になり、ファイル名のタイムスタンプはいつか変更され、1時間か2分増分されます。この複雑さにどのように直面するのですか? –
このような複雑さに対処する必要がないように配置することが最善です。ファイルには既に作成日/変更日の属性があるため、この情報をファイル名に複製することは、ファイル名の衝突を避けるためにのみ有効です。それは他の何かのために頼るべきではありません。xcopyの '/ D'パラメータは、コピー先に存在しないファイル、または存在する場合は新しいファイルをコピーし、新しい日付の場合にのみコピーします。デスティネーションから古いファイルを削除する場合は、最後に削除した日付を保存し、 '/ D:m-d-y'でそれを使用する必要があります。 –