مشاهده نسخه کامل
: ایجاد بچ فایل برای جمع آوری لاگ فایل
illusionist_m
26-05-2016, 22:05
سلام دوستان
من یه صورت مسئله دارم که سعی میکنم به واضح ترین شکل توضیحش بدم:
یه برنامه دارم که دوتا فایل لاگ A و B را در دو مسیر مختلف ایجاد میکنه. این دو تا فایل لاگ محدودیت حجمی دارن و تقریبا هر هفته Overwrite میشن. به همین دلیل من احتیاج دارم که از یک طریقی هر روز از این دوتا لاگ یه کپی بگیرم و به صورت فایل زیپ شده در یک پوشه آرشیو کنم و تا سه ماه اونها رو نگه دارم یعنی فایل هایی که بیشتر از سه ماه از ایجادشون گذشته اتوماتیک پاک شن تا حجم پوشه آرشیو هم زیاد نشه.
در جستجو هایی که انجام دادم دیدم به نظر میرسه که با بچ فایل میشه این کارو انجام داد و لی نمیدونم چه طوری ... کسی ازدوستان میتونه راهنمایی کنه لطفاً؟
سلام.../// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
*****************
این برنامه رو تست کنید..// امیدوارم کار کنه// قسمت حذف فایل های قدیمی تر از 3 ماه رو کامل تست نکردم ولی فکر می کنم کار می کنه.../// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
************************
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
********************
متأسفانه نسخه های قدیمی تر از ویندوز 8.1 به صورت پیشفرض قابلیت zip کردن فایل ها رو ندارن// برای حل این مشکل یکی از روش ها استفاده از makecab برای فشرده سازی فایل ها هستش که آرشیو cab میسازه...//// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
***************
موفق باشید! [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
illusionist_m
29-05-2016, 15:38
سلام؛
ممنون از پاسختون. این قسمت پاک کردنش رو میشه لطفاً کمی توضیح بدید، مکانیزم عملش به چه صورت هست؟
سلام.../// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
**************
کد جدید...//// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
******************
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
************************
برای انتخاب و حذف فایل های قدیمی تر از 90 روز (3 ماه) از دستور forfiles استفاده می کنیم../// پارامتر ها به این شکل هستن../// پارامتر m/ فیلتر رو مشخص می کنه که ما اینجا فایل های cab رو فیلتر کردیم.../// پارامتر d/ تاریخ رو مشخص می کنه و با ارسال عدد 90- فایل های قدیمی تر از 90 روز رو انتخاب می کنیم../// در نهایت پارامتر c/ دستوری که باید روی فایل های انتخاب شده اجرا بشه رو مشخص می کنه که ما دستور cmd /c del /q @path ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) رو ارسال کردیم تا فایل ها حذف بشن../// مستندات این دستور رو می تونید با مراجعه به آدرس پایین مشاهده کنید...//// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
*******************
cmd خط فرمان رو اجرا می کنه و اگه پارامتر c/ رو بهش ارسال کنید بعد از اجرای دستور به صورت خودکار بسته میشه.../// دستور del فایل رو حذف می کنه و پارامتر q/ که به این دستور ارسال کردیم باعث میشه بدون پرسیدن سوال از کاربر فایل رو حذف کنه.../// متغییر path توسط forfiles مقداردهی می شه و آدرس کامل فایل انتخاب شده داخلش ذخیره میشه.../// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
**************************
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
******************
موفق باشید! [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
illusionist_m
29-05-2016, 21:54
سلام [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
واقعاً متشکرم، توضیحاتتون کاملاً واضح هستن. ممنون.
میشه لطفاً این قسمت رو هم توضیح بدین؟
dir /s /b /a-d ".\new" > ".\list"
makecab /d CabinetName1=%date:~4,2%.%date:~7,2%.cab /f ".\list"
copy .\disk1\*.cab
del /q ".\list"
del /q ".\setup.*"
rd /q /s ".\new"
rd /q /s ".\disk1"
سلام.../// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
********************
دستور "dir /s /b /a-d ".\new محتویات پوشه ی new که تو مسیر فعلی قرار داره رو لیست می کنه و با استفاده از عملگر < خروجی این دستور رو داخل فایلی به اسم list تو مسیر فعلی ذخیره می کنیم..//// با استفاده از پارامتر s/ مشخص می کنیم که فایل هایی که داخل زیرپوشه ها قرار دارن هم باید لیست بشن در واقع ما نیازی به لیست فایل هایی که در زیرپوشه ها قرار دارن نداریم چون اصلاً زیرپوشه ای داخل پوشه new وجود نداره اما ارسال این پارامتر باعث میشه اسم هر فایل با مسیر کاملش لیست بشه و برای ارسال لیست فایل ها به برنامه makecab به لیست فایل ها با مسیر کاملشون نیاز داریم../// با ارسال پارامتر b/ اطلاعات اضافی مثل تاریخ و.. رو از لیست حذف می کنیم../// و در نهایت با پارامتر a-d/ پوشه ها رو هم از خروجی حذف می کنیم../// پارامتر a-d/ معادل a:-d/ هست// a مخفف attribute هست و d مخفف directory و ارسال این پارامتر باعث میشه فایل هایی که مشخصه directory دارن از لیست حذف بشن../// توجه کنید همیشه خروجی dir شامل دو پوشه داخل مسیر فعلی هست..// پوشه . که به پوشه ای که داخلش هستیم اشاره می کنه و مسیر فعلی رو مشخص می کنه و پوشه ی .. که به پوشه ی پدر اشاره میکنه و مسیری که پوشه ی فعلی داخلش قرار داره رو مشخص می کنه..//// این دو مسیر نباید داخل لیست وجود داشته باشن به همین خاطر پارامتر a-d/ رو ارسال می کنیم تا داخل لیست قرار نگیرن../// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
***************************
با دستور "makecab /d CabinetName1=%date:~4,2%.%date:~7,2%.cab /f ".\list آرشیو cab رو می سازیم../// با استفاده از پارامتر d/ مشخصه های آرشیو رو مقدار دهی می کنیم../// که در اینجا ما اسم آرشیو رو مقداردهی کردیم/// date:~4,2 از کاراکتر 5 خروجی date به طول دو کاراکتر جدا می کنه که برابر با مقدار عددی ماه میلادی هست../// date:~7,2 به همین شکل از کارکتر 8 به طول دو کاراکتر جدا می کنه که برابر مقدار روز هست در نهایت پسوند cab رو اضافه می کنیم و مجموع این ها اسم آرشیو رو میسازن../// با استفاده از پارامتر f/ لیست فایل هایی که باید به آرشیو اضافه بشن رو به makecab ارسال می کنیم...//// در اینجا فایل list رو که قبلاً ساختیم و لیست فایل ها رو داخلش ذخیره کردیم به makecab ارسال می کنیم../// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
************************
خروجی برنامه makecab تعدادی فایل هست که داخل پوشه ی فعلی ساخته میشن..// آرشیو داخل پوشه ی disk1 در مسیر فعلی قرار می گیره که با استفاده از دستور copy .\disk1\*.cab به مسیر فعلی منتقلش می کنیم../// با استفاده از دستور "del /q ".\list فایل لیست رو که ایجاد کرده بودیم حذف می کنیم../// پارامتر q/ باعث میشه بدون درخواست تأیید از کاربر فایل ها حذف بشن..//// تعدادی فایل به اسم setup با پسوند های مختلف هم توسط برنامه makecab ایجاد میشه که با استفاده از دستور "*.del /q ".\setup این فایل ها رو هم حذف می کنیم.../// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
*******************************
در نهایت با استفاده از دستور "rd /q /s ".\new پوشه ی new و با استفاده از دستور "rd /q /s ".\disk1 پوشه ی disk1 رو حذف می کنیم../// از دستور rd برای حذف پوشه ها استفاده میشه../// پارامتر q/ باعث میشه بدون درخواست تأیید از کاربر پوشه ها حذف بشن.../// و با استفاده از پارامتر s/ تمام فایل ها و زیرپوشه هایی که داخل مسیر مورد نظر وجود دارن رو حذف می کنیم../// در صورتی که مسیر مورد نظر حاوی زیرپوشه و... باشه برای حذف مسیر باید این پارامتر رو اضافه کنید../// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
****************************
اگه قسمتی رو خوب توضیح ندادم بگید تا بهتر توضیح بدم../// مستندات دستورات بالا رو می تونید با مراجعه به آدرس های پایین مشاهده کنید...//// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
************************
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
*********************
موفق باشید! [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
illusionist_m
31-05-2016, 07:42
سلام [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ممنونم از توضیحات کاملتون برای من که خیلی خیلی مفید بود . واقعاً متشکرم.
یک سوال دیگه ، ما در قسمتی که اسم و مسیر لاگ فایلی که میخواهیم ازش کپی تهیه بشه رو ست کردیم اسم فایل رو ذکر کردیم، اما یکی از این لاگ ها رو نمیشه به این صورت آدرس داد چراکه هرروز با تاریخ همون روز به عنوان اسم فایل یه لاگ در پوشه مربوطه ایجاد میکنه و باید لاگ همون روز تو فایل زیپ ذخیره بشه. میشه به این صورت اسم فایل رو آدرس دهی کرد؟
متشکرم
illusionist_m
31-05-2016, 10:18
سلام[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
جواب این سوال رو خودم با آزمون و خطا پیدا کردم
set TEMP=%date:~10,4%%date:~4,2%%date:~7,2%"
set A="F:\sattari\A\LOG\%TEMP%.TRC.XML"
copy %A% ".\new\%TEMP%.TRC.XML
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.