batch file برای کپی کردن فایل ها و فولدرها بر اساس تاریخ
سلام خدمت همه دوستان
میخواستم بدونم چطور میشه batch file ای نوشت که فقط فایلها و فولدرهای مشخصی رو براساس تاریخ کپی کنه ؟ مثلا بهش بگیم که فقط فایلها و فولدرهای تاریخ 15ام و 30 ام رو کپی کن من خودم با xcopy و robocopy امتحان کردم منتها میاد از 15 ام تا 30ام رو هرچی هست رو کپی میکنه در صورتیکه من میخوام optional باشه و فقط تاریخهای خاصی رو که خودم میگم کپی کنه
12 پاسخ
از دستور زیر میتونید استفاده کنید :
robocopy sourcePath destinationPath *.* /e /r:0 /w:0 /np
فایل رو با پسوند cmd. ذخیره کنید. حالا یه Scheduled Task ایجاد کنید و توی تب Trigger مشخص کنید که 15 ام و 30 ام هر ماه این Task رو اجرا کنه. توی تب Actions هم فایل اسکریپت رو بهش معرفی کنید.
در صورتی که پست براتون مفید واقع شده بود پست رو به عنوان جواب انتخاب کنید. سپاسگذارم
آقای کریم پور عزیز ، از شما تشکر میکنم روشتون خیلی خوب بود و با task scheduler هم جواب گرفتم و اوکی بود فقط میخواستم بدونم به نظر شما راهی وجود نداره که بهش بگم فقط روزایی که آخرش 15 و 30 داره رو کپی کنه و بهم log هم بده؟
سلام آقای کریم پور عزیز ، ما یه پوشه بکاپ ماهانه داریم که طی یک ساختار بکاپ گیری هرروز اقدام به بکاپ گیری میکنه و براساس روز خودش(تاریخ) پوشه شو درست میکنه حالا ما میخوایم بهش بگیم بیا مثلا پوشه های به تاریخ 15 و 30 ام (روزو خودمون تعیین کنیم)رو ببر به آدرسی که که خودمون مدنظر داریم کپی کنه یه جور حالت نمونه برداری از بکاپهامون میخوایم
شما نفرمودید که از چه ویندوز سرور هایی توی شبکه استفاده می کنید.
تو Task Scheduler میتونید تعریف کنید که با سطح دسترسی Admin اجرا بشه.
این لینک رو ببینید.
اگه از Robocopy بخواید استفاده کنید دستور زیر رو میتونید استفاده کنید :
Source ="<path>" Target= "<path>" Command="robcopy.exe " & Source & " " & Target & " /S /MaxAge:5"
البته برای ویندوز سرور ۲۰۰۳ باید Windows Server 2003 Resource Kit Tools رو نصب کنید.
تو دستوری که تو پست قبلی نوشتم به جای
*.*
اسم فایل مد نظرتون رو باید مشخص کنید.
به نظر شما راهی وجود نداره که بهش بگم فقط روزایی که آخرش 15 و 30 داره رو کپی کنه و بهم log هم بده؟
منظورتون رو متوجه نشدم
روشتون خوب بود ولی چندتا مشکل وجود داره یکی اینکه میاد همه رو کپی میکنه دوم اینکه فک نکنم robocopy تو ویندوز سرور 2003 جواب بده حقیقتش اینه که چندین سرور مختلف وجود داره از 2003 گرفته تا 2016 و سوم اینکه کدی که شما فرستادید گویا بایستی run as admin اجرا بشه
سلام ، میخواید همه فایل ها و پوشه هایی که توی یک پوشه قرار دارن روز 15 ام و 30 ام هر ماه کپی بشه یه جایی ؟ یا پارامتر خاصی مد نظرتون هست ؟ مثلا فایل هایی که Modify شدن یا پارامتر های دیگه ؟
طبق فرمایش شما من اومدم با کد زیر اجرا کردم میاد آخریشو کپی میکنه :
robocopy source destination . s maxage:1
کد بالا درست کار میکنه منتها پوشه های خالیمو کپی نمیکنه (پوشه های خالی هم واسه ما مهم هستش) من میام از پارامتر e/ استفاده میکنم ولی میاد همه پوشه های روزای قبلی مبدا رو بصورت خالی کپی میکنه
به نظر شما راهی وجود نداره که بهش بگم روزایی که آخرش 15 و 30 داره رو کپی کنه؟
نوع فایلهامون متنوع هستش و یک نوع نیستن
دوست عزیز بهتره این سئوال رو در قالب پست جداگانه در سایت مطرح کنید. سپاسگذارم
یعنی تو خود کدم بیام بگم تاریخهای 15 ام و 30 ام رو کپی کنه و روزش مهم باشه و با task scheduler اینکارو انجام ندم و یه log هم بهم بده که چه اتفاقاتی صورت گرفته
تو Task Scheduler میتونید تعریف کنید که با سطح دسترسی Admin اجرا بشه.
این لینک رو ببینید.
اگه از Robocopy بخواید استفاده کنید دستور زیر رو میتونید استفاده کنید :
Source ="<path>" Target= "<path>" Command="robcopy.exe " & Source & " " & Target & " /S /MaxAge:5"