Untuk menyederhanakan pertanyaan Anda (seperti yang saya mengerti), Anda ingin:
- Lihatlah direktori sumber dan dapatkan file terbaru
- Lihatlah direktori tujuan dan dapatkan file terbaru
- bandingkan perangko waktu dari kedua file ini
- Jika file direktori sumber (langkah 1) lebih baru dari file direktori tujuan (langkah 2), salin ke direktori tujuan.
- Jika disalin, ganti nama file baru di direktori tujuan.
Langkah 1 dan 2 dapat dilakukan dengan for for:
atur SOURCE_SERVER = \\ server \ sumber
atur DEST_SERVER = C: \ Folder Tujuan
atur SOURCE_LATEST =
set DEST_LATEST =
REM Stempel waktu terbaru di direktori sumber
untuk / f "token = *" %% A in ('dir "% SOURCE_SERVER% \ *. *" / b / o: -d') lakukan (
jika tidak didefinisikan SOURCE_LATEST setel SOURCE_LATEST = %% ~ fA)
Stempel waktu terbaru REM di direktori tujuan
untuk / f "token = *" %% A in ('dir "% DEST_SERVER% \ *. *" / b / o: -d') lakukan (
jika tidak didefinisikan DEST_LATEST atur DEST_LATEST = %% ~ fA)
Lebih banyak bantuan tentang itu di sini: Bagaimana cara saya menulis skrip batch Windows untuk menyalin file terbaru dari direktori?
Langkah 3 : Sekarang Anda tahu file terbaru di setiap lokasi. Saatnya membandingkan cap waktu mereka untuk melihat file mana yang lebih baru. Kita dapat menggunakan wmic untuk mengambil stempel waktu untuk setiap file yang dapat dibandingkan dengan operator relasional: misalnya 20150129113038 (yang sama dengan 29 Januari 2015 pukul 11:30:38) lebih besar dari 20150129112533 (29 Jan 2015 di 11:25:33 ).
set DEST_FILE_DATE =
atur SOURCE_FILE_DATE =
untuk / f "token = 1 lewati = 1 delims =." %% A dalam ('file data wm di mana nama ^ = "% SOURCE_LATEST: \ = \\%" dapatkan "Terakhir Dimodifikasi"') lakukan (
jika tidak didefinisikan SOURCE_FILE_DATE setel SOURCE_FILE_DATE = %% A)
untuk / f "token = 1 lewati = 1 delims =." %% A dalam ('file data wm di mana nama ^ = "% DEST_LATEST: \ = \\%" dapatkan "Terakhir Dimodifikasi"') lakukan (
jika tidak didefinisikan DEST_FILE_DATE setel DEST_FILE_DATE = %% A)
Gagasan tambahan seputar perbandingan terakhir ini dapat ditemukan di sini: Bagaimana cara membandingkan cap waktu file dalam skrip batch DOS?
Langkah 4 dan 5 : Terakhir, tentukan apakah file terbaru ada di server Source dan salin + ganti nama sesuai kebutuhan.
jika "% SOURCE_FILE_DATE%" gtr "% DEST_FILE_DATE%" (
REM salin file sumber ke tujuan dan ganti namanya sesuai keinginan.
salin "% SOURCE_LATEST%" "% DEST_SERVER% \ nama file baru.ext"
) lain (
REM Tunggu 5 menit dan coba lagi
batas waktu / T 300
goto: MULAI
)