- 2
- 0
- 3
- 102
آموزگار ابتدایی می باشم
در توسینسو تدریس کنید
و
با دانش خود درآمد کسب کنید
با سلام ، من برای اینکه بتوانم از ذخیره های برنامه اسکیو ال در مکان های دیگر پشتیبان داشته باشم به فکر نوشتن یک برنامه توسط بچ فایل افتادم و اکنون که این برنامه 3 سال است که به خوبی کار میکند تصمیم گرفتم آن را در این مکان به اشتراک بگذارم .روش کار این برنامه : با اجرای این برنامه در پوشه ای که در آن پوشه پوشه ذخیره بک آپ های اسکیو ال قرار دارد این برنامه توشط برنامه winrar شروع به فشرده ردن فایلهایی می کند که امروز گرفته شده است سپس خود یک بچ فایل دیگر می سازد که با اجرای آن اقدام به ارسال فایل های فشرده به سرور اف تی پی می نماید.این برنامه نام فایل فشرده را ترکیبی از نام شرکت نام بانک و تاریخ ایجاد میکند ، ابتدا کل متن زیر را در یک فایل تکست کپی کنید و بعد از دادن اطلاعات مورد نیاز که از خط دوم شروع می شود آن را با فرمت bat خیره نمائید :
echo ************* Start in %%B Time is :%time:~0,11% >batlog\out1.txt set Zone=نام شرکت set FtpIp=آي پي اف تي پي سرور set Ftpuser=نام کاربري اف تي پي Set FtpPass=کلمه عبور set FtpRoot=آدرس پوشه در اف تي ي set keepWeek=کدام روز هفته نگه داري شود set rarpass=رمز فایل فشرده rem *********** پایان تنظیمات ************** set mm=%date:~4,2% set dd=%date:~7,2% set yy=%date:~10,4% set Week=%date:~0,3% set filename=%week%-%yy%-%mm%-%dd% set BkRoot=%cd% md batlog MD FTPBAT del /s /q FTPBAT\*.bat echo all bat file in ftpbat is deleted >>batlog\out1.txt del /s /q SENDING.BAT echo SENDING.BAT is deleted >>batlog\out1.txt FOR /f "tokens=*" %%A IN ('DIR *.* /a:d /B') DO ( set PA=%%A REN %%A\%%A_backup_%yy%_%mm%_%dd%_*.BAK %ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK echo The File %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK Exist >>batlog\out1.txt IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK rar a /p%rarpass% %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd% %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK >>batlog\out1.txt IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR del /s /q %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo open %FtpIp%>FTPBAT\%%A-ftp.bat IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo %FtpUser%>>FTPBAT\%%A-ftp.bat IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo %FtpPass%>>FTPBAT\%%A-ftp.bat IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR if not "%FtpRoot%"=="" echo cd %FtpRoot%>>FTPBAT\%%A-ftp.bat IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo mkdir %%A>>FTPBAT\%%A-ftp.bat IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo cd %%A>>FTPBAT\%%A-ftp.bat IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR if not "%keepWeek%"=="%week%" echo mdelete %ZONE%-%%A-%week%-%yy%-%mm%-%dd%*.rar>>FTPBAT\%%A-ftp.bat IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo send %BkRoot%\%%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.rar>>FTPBAT\%%A-ftp.bat IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo by>>FTPBAT\%%A-ftp.bat IF EXIST FTPBAT\%%A-ftp.bat echo ************* This %%A-ftp.bat is Cereted :%time:~0,11% >>batlog\out1.txt IF EXIST FTPBAT\%%A-ftp.bat ECHO call ftp -i -s:%BkRoot%\FTPBAT\%%A-ftp.bat >>SENDING.BAT IF EXIST FTPBAT\%%A-ftp.bat ECHO THE %%A-ftp.bat ADD TO SENDING.BAT >>batlog\out1.txt echo.>>batlog\out1.txt echo.>>batlog\out1.txt ) GOTO END :END copy batlog\out1.txt batlog\%Zone%-%FtpIp%%filename%.txt call SENDING>> batlog\SENDING%yy%-%mm%-%dd%.txt
سپس این فایل را در پوشه ای که در آن پوشه پوشه بانک اطلاعاتی که توسط برنامه اس کیو ال ایجاد شده است کپی نمائید ،از پوشه برنامه winrar فایل Rar.exe را کنار این فایل قرار دهید حالا با اجرای این بچ فایل برنامه کار خود را آغاز میکند اگر می خواهید که این برنامه کار فشرده نمودن را در یک زمان و ارسال را در یک زمان دیگر انجام دهد خط آخر را پاک نمائید،توجه این برنامه بعد از فشرده کردن فایل اصلی را پاک میکند.- اگر مایل به پاک کردن بعد از فشردن نیستید این خط را غیر فعال نمائید :
IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR del /s /q %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK
با سلام و احترام
ضمن تشکر خواهشمند است در رابطه با جزئیات اسکریپت بیشتر توضیح دهید
به عنوان مثال در خصوص خطوط ابتدایی و همچنین نحوه عملکرد برنامه
منظور شما رو من درست نفهمیدم چون خطوط ابتدایی در مورد داده هایی است که باید پر بشه البته به زبان انگلیسی و همچنین نباید بین حروفش فاصله باشه چون ممکنه سیستم اشتباه کار کنه
روش این برنامه این طور میشه توضیح داد
از خط 10 تا 18 یک سری اطلاعات رو توی متغیر های خودش میریزه مثل تاریخ و محل قرار گیری این بچ فایل
از خط 19 تا 22 بچ فایل هایی که در آخرین اجراش درست کرده بود رو پاک میکنه و توی فایل لاگی که به نام out1و توی پوشه batlog هست این کار کار ها رو ثبت میکنه
از 23 تا 43 که یه دستور for هست این کار ها رو انجام میده
اول توسط دستور dir لیستی از همه فایل ها رو توی for قرار میده که بهتره که به جای . دستور *.bak باشه توی خط بعدی فایل bak رو که پیدا کرده اسمشو عوض میکنه به این نام
27 گزارش تغییر نام رو ثبت میکنه 28 فایل تغیر یافته رو فشرده میکنه 29 فایل اصلی رو پاک میکنه
echo ************* Start in %%B Time is :%time:~0,11% >batlog\out1.txt
set Zone=نام شرکت
set FtpIp=آي پي اف تي پي سرور
set Ftpuser=نام کاربري اف تي پي
Set FtpPass=کلمه عبور
set FtpRoot=آدرس پوشه در اف تي ي
set keepWeek=کدام روز هفته نگه داري شود
set rarpass=رمز فایل فشرده
rem ********** پایان تنظیمات *************
set mm=%date:~4,2% ذخیره شماره ماه جاری
set dd=%date:~7,2% ذخیره شماره روز جاری
set yy=%date:~10,4% ذخیره سال جاری
set Week=%date:~0,3% ذخیره ناه هفته جاری
set filename=%week%-%yy%-%mm%-%dd% ایجاد یک متغییر برای ساخت نام فایل
set BkRoot=%cd% استخراج پوشه جاری
md batlog ساخت پوشه
MD FTPBAT ساخت پوشه
del s q FTPBAT\*.bat پاک کردن فایل های بچ فایل آخرین کار کرد برنامه
echo all bat file in ftpbat is deleted >>batlog\out1.txt ارسال گزارش به فایل out
del s q SENDING.BAT پاک کردن فایل
echo SENDING.BAT is deleted >>batlog\out1.txt ارسال گزارش
FOR f "tokens=" %%A IN ('DIR .bak a:d /B') D دستور برای استخراج فال های bak
set PA=%%A
REN %%A\%%Abackup%yy%%mm%%dd%_*.BAK %ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK
jتغییر نام فایل پیدا شده به نام شرکت-نام پوشه ای که توش فایله هست -نام روز هفته -سال-ماه-روز
IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK echo The File %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK Exist >>batlog\out1.txt
ارسال گزارش در رابطه با تغییر نام فایل
IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK rar a
/p%rarpass% %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd% %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK >>batlog\out1.txt
در صورت وجود فایل ایجاد شده فال را فشرده می کند
IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR del s q %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK
در صورت وجود فایل فشرده فایل اصلی را پاک می کند
IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo open %FtpIp%>FTPBAT\%%A-ftp.bat
ساخت یک بچ فایل برای اتصال به اف تی پی دستور باز کردن اف
IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo %FtpUser%>>FTPBAT\%%A-ftp.bat
ارسال دستور نام کاربری اف
IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo %FtpPass%>>FTPBAT\%%A-ftp.bat
ارسال کلمه عبور اف تی پی
IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR if not "%FtpRoot%"=="" echo cd %FtpRoot%>>FTPBAT\%%A-ftp.bat
در صورت داشتن زیر پوشه در اف وارد شده به آن زیر پوشه
IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo mkdir %%A>>FTPBAT\%%A-ftp.bat
ساخت یک پوشه در اف به نام پوشه ای که حاوی فایل بک آپ است (نام دیتا بیس)
IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo cd %%A>>FTPBAT\%%A-ftp.bat
وارد شده به پوشه ساخته شده در اف
IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR if not "%keepWeek%"=="%week%" echo mdelete %ZONE%-%%A-%week%-%yy%-%mm%-%dd%*.rar>>FTPBAT\%%A-ftp.bat
این خطوط فایل هفته قبل را بر اساس نام هفته در اف پاک میکند
IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo send %BkRoot%\%%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.rar>>FTPBAT\%%A-ftp.bat
IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo by>>FTPBAT\%%A-ftp.bat
دستور خروج از اف
IF EXIST FTPBAT\%%A-ftp.bat echo ************* This %%A-ftp.bat is Cereted :%time:~0,11% >>batlog\out1.txt
ارسال گزارش
IF EXIST FTPBAT\%%A-ftp.bat ECHO call ftp -i -s:%BkRoot%\FTPBAT\%%A-ftp.bat >>SENDING.BAT
ساخت بچ فایلی که دستورات اف را اجرا کند
IF EXIST FTPBAT\%%A-ftp.bat ECHO THE %%A-ftp.bat ADD TO SENDING.BAT
>>batlog\out1.txt
ساخت بچ فایلی برای اجرای دستوراتی که ایجاد شده به ترتیب
echo.>>batlog\out1.txt
echo.>>batlog\out1.txt
)
GOTO END
:END
copy batlog\out1.txt batlog\%Zone%-%FtpIp%%filename%.txt
call SENDING>> batlog\SENDING%yy%-%mm%-%dd%.txt