فایلهای Batch دستهای از اسکریپتها با پسوند BAT یا COM هستند که حاوی یک سری از دستورات محیط خط فرمان میباشند؛ در این اسکریپتها، دستورات پشت سر هم اجرا شده و چون به زبان ماشین نزدیکاند با قدرت و سرعت بیشتری عمل میکنند. در این ترفند قصد داریم چند روش برای اتمام کدنویسی Batch Fileها و خروج از اسکریپت را آموزش دهیم.
برای این کار لازم است که ابتدا فایل Batch مورد نظر خود را با نرمافزارهایی نظیر Notepad باز کنید.
سپس
(ترفندستان) کدهای زیر را در انتهای Batch File خود قرار دهید.
خروج مستقیم از
اسکریپت
با این کد،
بدون هیچ پیغام و یا تأخیری برنامه بسته خواهد شد:
::: -- End of application --
EXIT
همچنین به جای کد بالا، میتوانید از این دستور استفاده نمایید:
::: -- End of application --
GOTO:EOF
خروج از
اسکریپت با فشردن یکی از دکمههای صفحهکلید و نمایش پیغام پیشفرض
با این کد،
پیغام پیشفرض «Press any key to continue» نمایش داده شده و با فشرده شدن هر
کدام از دکمههای صفحهکلید توسط کاربر، برنامه بسته خواهد شد.
::: -- End of application --
ECHO.&PAUSE&GOTO:EOF
خروج از
اسکریپت با فشردن یکی از دکمههای صفحهکلید و نمایش پیغام دلخواه
با این کد
(ترفندستان)، پیغام دلخواه شما نمایش داده شده و با فشرده شدن هر کدام از دکمههای
صفحهکلید توسط کاربر، برنامه بسته خواهد شد.
::: -- End of application --
ECHO.&ECHO.Custom Message.&PAUSE>NUL&GOTO:EOF
مشخصاً باید به جای عبارت «Custom Message»، پیام دلخواه
خود را جایگزین کنید.
خروج خودکار از
اسکریپت با وقفه زمانی
با این کد،
پیغام «Script Close Automatically In 10
Second» نمایش
داده شده و در نوار عنوان، 10 ثانیه به صورت معکوس شمرده خواهد شد. بعد از این
زمان، اسکریپت به صورت خودکار بسته میشود.
::: -- End of application --
ECHO Script Close Automatically In 10 Second!
FOR /l %%a in (10,-1,1) do (TITLE %title% -- closing in %%as&ping -n 2 -w 1
127.0.0.1>NUL)
GOTO :EOF
شما میتوانید پیغام دلخواه خود را
جایگزین عبارت «Script Close Automatically In 10
Second» کنید؛
همچنین با تغییر عدد 10 در کد بالا زمان وقفه را تغییر دهید.
خروج از برنامه
با پرسیدن سوالی از کاربر و تایید او
با این کد،
سوالی با عنوان «(DO YOU WANT TO EXIT? (Y/N» از کاربر پرسیده میشود که با تایپ Y، برنامه بسته شده و در صورت وارد کردن N برنامه
به ابتدای خود برمیگردد.
::: -- End of application --
ECHO DO YOU WANT TO EXIT? (Y/N)
SET /P q=
IF %q%==Y GOTO:EOF
IF %q%==N GOTO:START
شما میتوانید پیغام دلخواه خود را
جایگزین عبارت «(DO YOU WANT TO EXIT? (Y/N» کنید.
لازم به ذکر
است که برچسب START، باید در جای
مناسبی از اسکریپت آدرسدهی شود.
فایلهای Batch دستهای از اسکریپتها با پسوند BAT یا COM هستند که حاوی یک سری از دستورات محیط خط فرمان میباشند؛ در این اسکریپتها، دستورات پشت سر هم اجرا شده و چون به زبان ماشین نزدیکاند با قدرت و سرعت بیشتری عمل میکنند. در این ترفند به شما آموزش میدهیم که چگونه با نوشتن یک فایل Batch به حجم فایلهای مختلف پی ببرید.
برای این کار:
ابتدا
(ترفندستان) برنامه Notepad ویندوز را اجرا نمایید برای این کار
کلیدهای ترکیبی Win+R را فشار دهید، سپس در محیط Run عبارت notepad را وارد کرده و Enter بزنید.
حال کد زیر را
عیناً Copy کرده و در محیط Paste ،Notepad
نمایید:
@echo off
REM WWW.TARFANDESTAN.COM
set "filename=C:\Tarfandestan.txt"
for %%A in (%filename%) do echo.Size of "%%A" is %%~zA bytes
pause
واضح است که باید به جای C:\Tarfandestan.txt، مسیر دقیق
فایل مدنظر را همراه با نام و پسوند دقیق جایگزین نمایید.
پس از کپی کردن
کد، از منوی File بر روی Save as کلیک کنید. سپس فایل را با نام دلخواه
و پسوند bat. و در محلی به دلخواه خود ذخیره کنید
(به عنوان مثال نام آن را
Tarfandestan.bat قرار
دهید).
در نهایت فایل bat ساخته
شده را اجرا نمایید تا حجم دقیق فایل مورد نظر برحسب بایت را ملاحظه نمایید.
با کمی تغییر
در برنامهی فوق از آن استفادههای دیگری نیز میتوان کرد. برای مثال با برنامهی
زیر میتوانید تمامی فایلهای پوشهی جاری که حجم خاصی دارند را بیابید؛ در این
مثال ما حجم 0 یعنی فایل خالی را در نظر گرفتیم:
@echo off
REM WWW.TARFANDESTAN.COM
set "filename=*.*"
for %%A in (%filename%) do if %%~zA==0 echo."%%A" is empty
pause
توجه داشته باشید که حجم فایل را باید در واحد بایت وارد نمایید.
FTP، مخفف عبارت File Transfer Protocol و به معنی پروتکل انتقال فایل است. پروتکلی بسیار کارآمد که برای انتقال فایلها بین کامپیوتر سرور (Remote Computer) و کامپیوتر شخصی (Local Computer) میباشد. اکثر کاربران برای اتصال به سرور FTP و دانلود و آپلود فایلها، از نرمافزارهای مختلفی مانند FileZilla یا CuteFTP استفاده میکنند؛ اما در شرایطی که به چنین نرمافزارهایی دسترسی نداشته باشیم چاره چیست؟ در این ترفند به شما آموزش میدهیم که با استفاده از محیط خط فرمان ویندوز و یا همان کنسول CMD، به یک سرور FTP متصل شده و عملیات مدنظر خود را انجام دهید.
برای این کار:
دکمههای Win+R را فشرده و در کادر Run عبارت CMD را تایپ نمایید؛ سپس (ترفندستان) دکمهی Enter را بفشارید.
در محیط خط
فرمان با تایپ عبارت FTP و فشردن Enter وارد کنسول FTP میشوید.
در مرحله بعدی
با استفاده از دستور زیر به سرور متصل شوید:
open ftp.domain.com
که مشخصاً به جای ftp.domain.com باید آدرس FTP مدنظر را جایگزین کنید (این آدرس میتواند
بر اساس IP نیز باشد(.
با استفاده از
دستور بالا، از شما درخواست Username و Password میشود که باید نام کاربری و کلمهی
عبور حساب FTP خود را وارد کنید.
با اتصال موفق
به سرور FTP، میتوانید با
استفاده از دستورات زیر عملیاتهای مختلفی را انجام دهید:
ascii: تنظیم
نحوهی انتقال فایلها بر روی حالت ASCII
binary: تنظیم
نحوهی انتقال فایلها بر روی حالت Binary
cd: تغییر
پوشهی جاری در کامپیوتر سرور
delete: پاک
کردن یک فایل از کامپیوتر سرور
dir: نمایش
لیست فایلها و پوشههای موجود در کامپیوتر سرور
get: دریافت
یک فایل از کامپیوتر سرور
lcd: تغییر
پوشهی جاری در کامپیوتر شخصی
mdelete: پاک
کردن یک و یا چندین فایل از کامپیوتر سرور
mget: دانلود
یک یا چندین فایل از کامپیوتر سرور
mkdir: ساختن
یک پوشه در کامپیوتر سرور
put: ارسال
یک فایل از کامپیوتر شخصی به کامپیوتر سرور
mput: ارسال
یک یا چندین فایل از کامپیوتر شخصی به کامپیوتر سرور
pwd: نمایش
پوشهی جاری در کامپیوتر سرور
rename: تغییر
نام فایلهای موجود در کامپیوتر سرور
rmdir: پاک
کردن پوشه از کامپیوتر سرور
status: نمایش
وضعیت اتصال سرور FTP
user: تعیین
کاربر جدید برای کامپیوتر سرور
در انتها با
استفاده از دستور disconnect میتوانید اتصال خود از سرور را قطع کرده
و سپس با تایپ دستور bye و فشردن Enter وارد محیط عادی خط فرمان شوید.
در صورتی که قصد نوشتن یک فایل Batch را داشته باشید که به عنوان ورودی از کاربر عبارتی را دریافت کند، این امر بسیار مهم خواهد بود که در سمت راست، چپ و یا بین حروف عبارت وارد شده از کاراکتر فاصله (Space) و یا دو کوتیشن (" ") استفاده نشده باشد؛ زیرا وجود هر یک از این کاراکترها، استفاده شما از متغیر مدنظر را دچار مشکل میکند. در این ترفند یاد خواهید گرفت که چگونه کاراکترهای فاصله و دو کوتیشن را از ورودی اسکریپت حدف نمایید.
حذف فاصله از سمت چپ، سمت راست و بین
حروف عبارت ورودی
فرضاً اگر
متغیر شما str باشد، با استفاده از این کد، متغیر
خود را اصلاح کنید:
set str=%str: =%
به عنوان مثال برنامهی شما به چنین شکلی میتواند باشد:
@echo off
set /p str=
set str=%str: =%
echo.%str%
pause
حذف فاصله از
سمت چپ عبارت ورودی
فرضاً اگر
متغیر شما str باشد، با استفاده از این کد، متغیر
خود را اصلاح کنید:
for /f "tokens=* delims= " %%a in ("%str%") do set str=%%a
به عنوان مثال برنامهی شما به چنین شکلی میتواند باشد:
@echo off
set /p str=
for /f "tokens=* delims= " %%a in ("%str%") do set str=%%a
echo.%str%
pause
حذف فاصله از
سمت راست عبارت ورودی
فرضاً اگر
متغیر شما str باشد، با استفاده (ترفندستان) از این
کد، متغیر خود را اصلاح کنید:
for /l %%a in (1,1,31) do if "!str:~-1!"==" " set str=!str:~0,-1!
به عنوان مثال برنامهی شما به چنین شکلی میتواند باشد:
@echo off
set /p str=
for /l %%a in (1,1,31) do if "!str:~-1!"==" " set
str=!str:~0,-1!
echo.%str%
pause
حذف کوتیشن از
دو طرف عبارت ورودی
فرضاً اگر
متغیر شما str باشد، با استفاده از این کد، متغیر
خود را اصلاح کنید:
for /f "useback tokens=*" %%a in ('%str%') do set str=%%~a
به عنوان مثال برنامهی شما به چنین شکلی میتواند باشد:
@echo off
set /p str=
for /f "useback tokens=*" %%a in ('%str%') do set str=%%~a
echo.%str%
pause
توجه داشته باشید که کد بالا، فقط کوتیشن را از دو طرف عبارت ورودی حذف مینماید.
مطمئناً شما نیز پس از نصب ویندوز
شروع به نصب نرمافزارهای کاربردی خود مینمایید. طبیعتاً از میان انبوه نرمافزارهایی
که دارید، تنها بعضی از آنها را برای نصب انتخاب میکنید و از این پوشه به آن
پوشه به دنبال فایل نصب آنها میگردید. در این ترفند قصد داریم روشی را معرفی
کنیم که با استفاده از آن میتوانید با نوشتن یک فایل Batch، فایل Setup
نرمافزارهای
دلخواهتان را پشت سر هم اجرا کرده و نرمافزارهای مدنظر را نصب کنید.
فایل Batchی که قصد نوشتن آن را داریم از دستور Start برای اجرای فایلهای Setup کمک میگیرد؛ اما همانطور که میدانید در فایلهای Batch، دستورات پشت
سر هم اجرا میشوند لذا با استفادهی مستقیم از دستور Start تمامی فایلهای نصبی با هم اجرا میشوند
که چنین چیزی نه تنها راهحل نیست بلکه مشکل جدیدی برای ما میسازد!
راهحلی که ما
پیش روی شما میگذاریم استفاده از سوییچ w/ به همراه دستور Start میباشد. این سوییچ، تا اتمام برنامهی
اجرا شده به وسیلهی دستور Start صبر خواهد کرد و پس از آن دستور بعدی
اجرا خواهد شد.
برای این کار:
دکمههای Win+R را فشرده (ترفندستان) و سپس عبارت Notepad را تایپ نمایید. با فشردن دکمهی Enter، ویرایشگر Notepad باز خواهد شد.
حال کد زیر را
عیناً Copy کرده و در محیط Paste ،Notepad
نمایید:
@echo off
start /w D:\Software\Setup1.exe
start /w D:\Software\Setup2.exe
start /w D:\Software\Setup3.exe
دقت داشته باشید که مسیر فایلهای
نصبی مدنظرتان را در کد بالا تغییر دهید.
پس از کپی کردن
کد، از منوی File بر روی Save as کلیک کنید. سپس فایل را با نام دلخواه
و پسوند bat. و در محلی به دلخواه خود ذخیره نمایید
(به عنوان مثال نام آن را
Tarfandestan.bat قرار
دهید).
با اجرای فایل Batch فوق، فایل نصبی برنامهی اول اجرا شده و پس از اتمام نصب، فایل Setup دوم اجرا میشود و به همین ترتیب ادامه مییابد.
برای نوشتن این Batch File، روش حرفهایتری
نیز میتوانیم پیش بگیریم؛ به این صورت که مسیر تمامی فایلهای نصبی را در یک فایل
متنی ذخیره کرده و سپس با کدنویسی و استفاده از حلقهی FOR، فایل Batch را مجبور به خواندن خط به خط فایل
متنی میکنیم.
با این کار،
برای اضافه نمودن برنامه جدید کافی است )ترفندستان) مسیر فایل جدید را به فایل
متنی اضافه کنید و دیگر نیازی به ویرایش فایل Batch ندارید.
برای این کار:
Notepad را
باز کرده و در هر خط، مسیر فایل Setup را بنویسید و آن را با پسوند TXT و نام دلخواه ذخیره نمایید. به عنوان
مثال با محتوای زیر و با نام Install.txt:
D:\Software\Setup1.exe
D:\Software\Setup2.exe
D:\Software\Setup3.exe
سپس فایل Batch خود را در کنار فایل متنی و با محتویات زیر ذخیره کنید:
@echo off
setlocal enabledelayedexpansion
for /F "delims=" %%a in (Install.txt) do (
set /A count+=1
set "array[!count!]=%%a"
)
for /L %%i in (1,1,%count%) do start /w !array[%%i]!
با اجرای این این اسکریپت، مشابه اسکریپت قبلی فایل نصبی برنامهی اول اجرا شده و پس از اتمام نصب، فایل Setup دوم اجرا میشود و به همین ترتیب ادامه مییابد.