درباره Batch File و دستورات CMD و .BAT
بچ فایل چیست
بچ فایل در واقع فایل متنی با یکی از پسوندهای bat. یا cmd. و یا btm. است و شامل یک سری دستور (Command) میشود که وقتی آن را اجرا میکنید مستقیماً وارد محیط CMD یا همان Command Prompt شده و دستورات را بهصورت اتوماتیک و پشت سر هم انجام میدهد.
شروع
برای ساخت یک فایل BAT به راحتی میتوانید برنامه Notepad ویندوز را باز کنید فرمت آن را AllFile قرار دهید. سپس پسوند آن را به bat. تغییر دهید
می توانید دستورات را داخل همین فیل متی بنویسید و یا بر ری فایل ساخته شده کلیک راست و Edit را انتخاب کنید
لیست برخی از دستورات مهم
Title: این دستور عنوان پنجره CMD را به مشخص میکند.
Echo: این دستور برای نمایش متن در محیط استفاده میشود.
Echo off@: این دستور از نمایش خط مورد استفاده جلوگیری میکند(مشخص میکند این یک فایل غیر تعاملی یا Non-Interactive است)
Cls: این دستور برای پاک کردن محیط CMD استفاده میشود.
Pause: هنگامی که در اجرای بچ فایل به این دستور برسید، برنامه برای اجرای بقیه دستورات منتظر میماند تا کاربر یکی از دکمههای کیبورد را بفشارد.
Exit: این دستور برای خروج از محیط CMD استفاده میشود.
Color: تعیین رنگ متن و پس ضمینه (لیست کد رنگهای در دسترسی)
Rem: امکان نوشتن توضیحات در فایل که در اجرا نقشی ندارد
دونقطه (:): ایجاد بخش یا فهرست
Goto: این دستور برو به بخش یا فهرست خاص را امکان پذیر میکند
Start: این دستور جهت اجرا یک برنامه مورد استفاده قرار میگیرد.
start “” [website]: آدرس وب داده شده را در مرورگر پیشفرض باز میکند.
Set: برای مشخص نمودن ورودیها و تغییر Variable ها(متغییرها) استفاده میشود.(پارامتر /a برای محاسبات و ورودی باید فقط عدد باشد. پارامتر /p برای هر نوع ورودی دلخواه استفاده میشود)
IF: برای مشخص نمودن شرط استفاده میشود(با پارامتر NOT میتوان شرط را معکوس همچین برای شروط دقیقترمیتوان از EQU : مساوی است با – NEQ : مساوی نیست با – LSS : کمتر است از – LEQ : کمتر یا مساوی است با – GTR : بزرگتر است از == : مقایسه دو مقدار ، استفاده کرد)
&: اجرا دستور دیگر در همان خط دستور
&&: اجرای دستور بعد و بررسی صحت عملکرد دستور قبل
FOR: برای ایجاد چرخه (LOOP) استفاده میشود و میتوانید فایلها و پوشهها و یا هر دو آنها را بررسی کرد
لیست ۵۰ دستور مهم CMD
# | دستور و توضیحات |
---|---|
1 | VER نمایش نسخه سیستم عامل |
2 | ASSOC نمایش و ویرایش پسوند فایلها با File Type ها |
3 | CD برای حرکت بین پوشه ها در درایو |
4 | CLS پاک کردن متنهای موجود در صفحه |
5 | COPY برای کپی گرفتن از فایلها |
6 | DEL برای پاک کردن فایلها و پوشهها |
7 | DIR برای فهرست گیری از فایلهای موجود |
8 | DATE برای نمایش و تغییر تاریخ |
9 | ECHO برای نمایش یا عدم نمایش متن در دو حالت روشن و خاموش |
10 | EXIT برای خروج از محیط |
11 | MD برای ساخت یک پوشه |
12 | MOVE برای انتقال فایلها به محل دیگر |
13 | PATH برای نمایش یا مشخص نمودن مسیر |
14 | PAUSE توقف و انتضار برای وارد کردن یک کلید توسط کاربر |
15 | PROMPT برای تغییر در مسیر cmd.exe و تغییر نام خط فرمان |
16 | RD برای حذف پوشهها و دایرکتوریها |
17 | REN برای تغییر نام فایلها و پوشهها |
18 | REM برای نوشتن توضیحات و ریمارک نویسی |
19 | START برای اجرای برنامه در صفحه جدید |
20 | TIME نمایش تغییر ساعت |
21 | TYPE برای نمایش محتوی فایل متنی |
22 | VOL برای نمایش سریال و نام درایوها |
23 | ATTRIB برای تغیر ویژگی فایلها و پوشهها به Read Only – System – Archive – Hidden |
24 | CHKDSK برای بررسی مشکلات دیسک |
25 | CHOICE برای ایجاد توانایی انتخاب گزینه توسط کاربر |
26 | CMD برای اجرا خط فرمان CMD |
27 | COMP برای مقایسه حجم دو فایل |
28 | CONVERT برای تبدیل فرمت یک درایو از FAT به NTFS |
29 | DRIVERQUERY برای نمایش Driver های نصب شده در ویندوز |
30 | EXPAND برای استخراج فایلهای .cab |
31 | FIND برای پیدا کردن یک کلمه یا جمله در یک فایل متنی |
32 | FORMAT برای فرمت کردن یک درایو |
33 | HELP برای استفاده از راهنما |
34 | IPCONFIG برای نمایش تنظیمات و پیکربندی IP |
35 | LABEL برای اضافه، حذف و یا تغیر عنوان دیسک |
36 | MORE برای نمایش محتوای فایلهای متنی بصورت خطی |
37 | NET بسته به فرمان مورد استفاده، خدمات شبکه مختلفی را فراهم می کند.
|
38 | PING برای ارسال پکتها به یک آدرس و انتظار برای رسیدن جواب در بستر شبکه |
39 | SHUTDOWN برای خاموش و ریستارت و Logoff کردن Shutdown /s Shutdown /r Shutdown /l |
40 | SORT برای مرتبسازی یک ورودی و نمایش بر اساس حروف الفبا |
41 | SUBST برای ساخت درایو مجازی |
42 | SYSTEMINFO برای نمایش اطلاعات سیستم |
43 | TASKKILL برای بستن برنامهها و پرسسهای در اجرا |
44 | TASKLIST برای فهرست گیری از برنامهها و پرسسهای در اجرا |
45 | XCOPY برای کپی و انتقال فایلها و پوشهها |
46 | TREE برای فهرستگیری از پوشهها و فایلهای بصورت درختی |
47 | FC برای بررسی تفاوت دو فایل |
48 | DISKPARTبرنامه مدیریت پارتیشن در خط فرمان، امان ایجاد،حذف، تغییر و تبدیل GPT به MBR یا Dynamic به Static |
49 | TITLE برای تغییر عنوان صفحه |
50 | SET برای تعیین متغییر |
چند مثال کاربردی:
باز کردن سایتهای
یک فایل batch file ایجاد میکنیم و محتوی مورد نظر را بصورت زیر در آن قرار میدهیم
@echo off
start "" https://amirweb.me
start "" https://ebanking.bankmellat.ir/ebanking/#/
start "" https://www.instagram.com/amirweb.me/
start "" https://www.google.com/
توضیح:
با دستور @echo off غیر تعاملی بودن را فعال میکنیم
با دستور start و آدرس سایت مورد نظر را به فایل میدهید کاراکتر “” هم باز شدن در تب جدید را برای ما فراهم میکن
بررسی باز بودن پورت
در این مطلب در مورد نحوه تشخیص باز یا بسته بودن پورت نوشته ام در انجا می خواهیم با برنامه PortyQry.exe مراحل بررسی را کاربر پسند کنیم
یک فایل batch file ایجاد میکنیم و محتوی مورد نظر را بصورت زیر در آن قرار میدهیم فایل PortyQry.exe را در کنارش قرار مدهیم
@echo off
Title Port Status Check Created BY Amirweb.me & Color 0a
cls
set /p host="Host? "
set /p port="Port? "
.\PortyQry.exe -n %host% -e %port%
pause
توضیح:
با دستور @echo off غیر تعاملی بودن را فعال میکنیم
Title عنوان را به دلخواه تغییر میدهیم
با & دستور بعدی در همان خط را قابل اجرا میکنیم
با Color رنگ ضمینه و متن را تغییر میدهیم
cls صفحه را پاکسازی میکنیم
set /p host=”Host? “ متغییری به نام host تعیرف میکنیم set /p از کاربر ورودی را دریافت میکند
set /p port=”Port? “ منغییری به نام Port تعریف میکنیم set /p از کاربر ورودی را دریافت میکند
.\ به پوشهای که فایل در آن اجرا شد ارجا میدهد PortyQry.exe -n %host% -e %port% برنامه را با سویچ -n و مقدار متغییر %host% را جاگذاری میکند و با سیوچ -e مقدار %port% را جاگذاری و اجرا میکند
Pause مانع از بسته شدن فایل میشود تا زمانی که کاربر کلیدی را فشار دهد
پشتیبانگیری
در اینجا میخواهیم از فایلها و پوشههای مورد نظر در محل مورد نظر پشتیبان (Backup) بگیریم،این پشتیبان اینگونه عمل کند که در محل پشتیبانگیری یک پوشه با نام تاریخ ایجاد کند و کلیه فایلها و پوشهها را کپی کند
یک فایل batch file ایجاد میکنیم و محتوی مورد نظر را بصورت زیر در آن قرار میدهیم
@ECHO OFF
set source=C:\amirweb\
set destination=d:\Backup\
for /F "tokens=2-4 delims=/ " %%i in ('date /t') do set yyyymmdd1=%%j"."%%i"."%%k
if exist %destination% goto GO
:GO
mkdir %destination%%yyyymmdd1%
xcopy %source%* %destination%%yyyymmdd1% /s/d/y/c/v/r
echo.
echo Finished copying %source% to %destination%
echo.
echo Created %destination%%yyyymmdd1%
pause
توضیح:
با دستور @echo off غیر تعاملی بودن را فعال میکنیم
توسط دستور set دو متغییر بنام source ( برای پوشه مورد نظر) و destination (آدرس مقصد) تعیین میکنیم
FOR یک چرخه ایجاد میکنم و از دستور date /t که خروجی به شکل Sat 05/25/2019 دارد تاریخ را استخراج میکنیم
با دستور tokens بخش مورد نظر از تاریخ را انتخاب میکنم (۲ از ۴) و آن را با دستور set داخل متغییر به نام yyyymmdd1 قرار میدهیم
با if یک شرط برقرار میکنیم که اگر مقصد مجود داشت با goto به منوی GO برو
:GO منوی و لیبل GO را میسازیم
با دستور mkdir برای ساخت پوشه دو متغییر %destination% مقصد و %yyyymmdd1% برای نام پوشه بر اساس تاریخ را ایجاد میکنیم
با دستور xcopy از متغییر source مسیر را دریافت میکنیم * به مفهوم کلیه فایلها میباشد، مسیر مصد را از دو متغییر %destination% %yyyymmdd1% به دستور میدهیم
برای دستور xcopy سویچ و پارامترهای /s/d/y/c/v/r را انتخاب میکنیم (/s کپی پوشهو زیر پوشهها – /d فایلهای کپی شده در تاریخ یا بعد از تاریخ مشخص شده تغییر کرده است. اگر هیچ تاریخی داده نشود، فقط آن فایلهایی را که زمان منبع تازهتر از زمان مقصد هستند کپی میکند. – /y برای اوررایت و عدم توقف – /c عدم توقف برای خطاها- /v اطمینان از قابل خواندن بودن – /r نوشتن فایلهای فقط خواندنی)
با دستور echo به کاربر در مورد اتمام عملیات اطلاع میدهیم
Pause مانع از بسته شدن فایل میشود تا زمانی که کاربر کلیدی را فشار دهد
یافتن نسخه ویندوز
میخواهیم نسخه ویندوز را مشخص کنیم
یک فایل batch file ایجاد میکنیم و محتوی مورد نظر را بصورت زیر در آن قرار میدهیم
@echo off
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
if "%version%" == "6.0" echo Windows Vista.
if "%version%" == "6.1" echo Windows 7
if "%version%" == "6.2" echo Windows 8
if "%version%" == "6.3" echo Windows 8.1
if "%version%" == "10.0" echo Windows 10.
Pause
توضیح:
با دستور @echo off غیر تعاملی بودن را فعال میکنیم
FOR یک چرخه ایجاد میکنم
ver برای بدست آوردن نسخه ویندوز( چیزی مثال Microsoft Windows [Version 10.0.18362.116] )
tokens=4-5 مقدار بست آمده را تقسیم میکند یه ۵ قسمت و قسمت ۴ را نگه می دارد با delims (در انجا 10.0)
set VERSION=%%i.%%j مقدار بدست آمده را بعنوان VERSION یک متغییر در نظر میگیرد
if “%version%” مقدار VERSION را با == بررسی میکند در هر چرخه اگر با مقدار if برابر باشد echo آن خط را نمایش میدهد
Pause مانع از بسته شدن فایل میشود تا زمانی که کاربر کلیدی را فشار دهد
تشخیص ۳۲ بیتی یا ۶۴ بیتی بودن ویندوز
میخواهیم ۳۲ بیتی یا ۶۴ بیتی بودن ویندوز را مشخص کنیم
یک فایل batch file ایجاد میکنیم و محتوی مورد نظر را بصورت زیر در آن قرار میدهیم
@echo off
echo Detecting OS processor type
if /i "%PROCESSOR_IDENTIFIER:~0,3%"=="X86" (
echo system is x86
echo 32-bit...
) else (
echo 64-bit...
)
pause
توضیح:
با دستور @echo off غیر تعاملی بودن را فعال میکنیم
با echo متن دلخواه را مینویسیم
شرط را با if آغاز میکنیم با سویچ /I غیر حساس بودن به مقدار را تعیین میکنم(یعنی فقط قسمیتی از وروردی برابر باشد کافیست)
PROCESSOR_IDENTIFIER یکی از مقدارها ویندوز برای نمایش نوع پردازندش ویندوز میباشد از انجا که در ویندوزهای ۳۲ بیتی کلمه X86 را در این مقدار درج میکند در اینجا از آن استفاده میکنیم
که اگر در مقدار دریافتی از PROCESSOR_IDENTIFIER کلمه X86 وجود داشت با echo بنویس 32-bit
) else ( مشخص میکند که در غیر این صورت با echo بنویس 64-bit
Pause مانع از بسته شدن فایل میشود تا زمانی که کاربر کلیدی را فشار دهد
PING کردن گوگل
می خواهیم با اجرا یک batch file بصورت مداور سایت گوگل ping شود
یک فایل batch file ایجاد میکنیم و محتوی مورد نظر را بصورت زیر در آن قرار میدهیم
@echo off
title pinging www.GOOGLE.com
echo TEST: Pinging Google
ping google.com -t
توضیح:
با دستور @echo off غیر تعاملی بودن را فعال میکنیم
با دستور title عنوان صفحه را تغییر میدهیم
با echo متن دلخواه را نمایش میدهیم
با دستور ping و آدرس سایت مرود نظر که با سویچ -t جهت ادامه دار بودن فعال است
یک مثال برای ساخت منو
میخواهیم با اجرای اسکریپت از کاربر جهت اجرای برنامه notepad یا calculator سوال کند و به نسبت ورودی اطلاعات برنامه مورد نظر را باز کند
یک فایل batch file ایجاد میکنیم و محتوی مورد نظر را بصورت زیر در آن قرار میدهیم
@Echo off
Title Create Batch Menu
:Menu
Color 0a
Echo ______________________________________
Echo.
Echo Please Choose one of the following menu
Echo Press n for open notepad
Echo Press c for open calculator
Echo ______________________________________
Echo.
SET /P M=Type n or c and Press Enter:
IF %M%==n goto Notepad
IF %M%==c goto Calculator
Goto Menu
:Notepad
Start Notepad
EXIT
:Calculator
Start Calc
EXIT
توضیح:
با دستور @echo off غیر تعاملی بودن را فعال میکنیم
با دستور Title عنوان صفحه را تغییر میدهیم
با : یک لیبل به نام Menu ایجاد میکنیم
Color رنگ ضمینه و نوشته را تغییر میدهیم
با Echo متن و خط برای ایجاد محیط بهتر ایجاد میکینم
با SET یک متغییر به نام M تعیین با سویچ /p آن را از ورودی کاربر دریافت خواهیم کرد
با IF شرط برقرار مینیم که اگر وروردی کاربر برای متغییر M کاراکتر n بود با دستور goto به لیبل(منوی)Notepad برو و در صورت c بودن به منوی Calculator برو
Goto Menu باعث می ؤود برنامه در لیبل Menu که در اول ایجاد کردیم منتظر بماند
:Notepad همان لیبلیست که برای Notepad ایجاد کردیم در صورتی که این لیبل انتخاب شود دستور Start Notepad اجرا میشود
:Calculator همان لیبلیست که برای Calculator ایجاد کردیم در صورتی که این لیبل انتخاب شود دستور Start Calc اجرا میشود
EXIT بعد از اتمام برنامه را میبندد
مرتبسازی فایلها
می خواهیم با اجرا یک batch file کلیه فایلهای پوشهای که فایل در آن است را بر اساس فرمت و نوع فایل در داخل پوشههای مربوط طبقهبندی کنیم
یک فایل batch file ایجاد میکنیم و محتوی مورد نظر را بصورت زیر در آن قرار میدهیم
@echo off
rem For each file in your folder
for %%a in (".\*") do (
rem check if the file has an extension and if it is not our script
if "%%~xa" NEQ "" if "%%~dpxa" NEQ "%~dpx0" (
rem check if extension folder exists, if not it is created
if not exist "%%~xa" mkdir "%%~xa"
rem Move the file to directory
move "%%a" "%%~dpa%%~xa\"
))
پوشه مثال:
با اجرا فایل به این صورت مرتب میشود
توضیح:
سطح این اسکریپ پیشرفته میباشد و کمی گیج کننده به نظر میآید
با دستور @echo off غیر تعاملی بودن را فعال میکنیم
rem یک توضیح برای خودمات نوشتهایم که این فایل برای چه کاریست
FOR یک چرخه ایجاد میکنم
%%a به معنی کار با تکتک فایلهای موجود در فولدری است که فایل bat در آن اجرا میشود.
(“.\”) به معنی فولدر ریشهای است.
%~xa برای بررسی پسوند و فرمت فایل میباشد
NEQ : مساوی نبودن پشوندها را بررسی میکند
mkdir “%%~xa” یک پوه همنام پسوند فایل ایجاد میکند
move “%%a” “%%~dpa%%~xa\” فایلها با پسوند مشابه را به دوشه با پسوند مسابه انتقال میدهد
سلام دوست عزیز خسته نباشید میخواهم بدیدجما یک سوال بپرسیدم من یک سری فلیلهای متنی دارم که خیلی زیادن حدود 1000 تا و همشون تو یک فولدر هستند و می خواهم به انتهای هر کدوم از این فایلهای متنی یک ردیف خالی اضافه کنم چون وقتی میخوام اونها رو به همدیگه بچسبونم متونی که در انتهای هر فایل تکست هستن به جمله قبلی می چسبن ولی در واقع باید روی یک خط جدید به فایل تکست قبلی بچسبه پس باید یه خط خالی در انتهای هر تکست قرار بگیره لطفا یک فایل. Bat بهم یاد بدید که بشه باهاش این کار و کرد. با تشکر فراوان.
سلام
میخواستم با batch برنامه ای بنویسم که دو رشته از من بگیرد.یکی متن و دیگری یک کلید و سپس متن من را بر اساس آن کلید ، رمزنگاری کند و برایم بنویسد
اگه میشه راهنمایی کنید ممنون میشم
سلام آیا میشه دستوری نوشت که DIR درایوی در شبکه را دید؟
با سلام
با CMD چطوری میشه یه شورتکات از فایل exe ایجاد کرد؟
سلام وقتتون بخیر من برای پینگ گرفتن از دستور :
@echo off
title pinging http://www.GOOGLE.com
echo TEST: Pinging Google
ping google.com -t
استفاده میکنم ولی فقط مرتب پشت هم دستور TEST: Pinging Google چاپ میشود مشکل چیه
سلام دوست عزیز
نام فایل را ping.bat نزارید
حل میشه
موفق باشین
-t
سلام
t-
را خذف کنید متوقف میشود.
با سلام
جهت کپی روزانه فایل های backup از یک سیستم به سیستمی دیگر (سیستم مقصد با IP آدرس و نام کاربری کاربر موردنظر تعیین شود) میتوان از فایل بچ استفاده کرد؟ لطفا راهنمایی بفرمایید که کد فایل بچ به صورت باید نوشته شود.
سلام
میخوام یک لینک رو توسط گوگل کروم به شکل autostart اجرا کنم
موفق هم شدم
ولی میخوام به صورت fullscreen باشه
آیا کدی براش وجود داره
@echo off
start chrome “http://localhost/ashow/”
@echo off
END
taskkil /f /im ashow.bat
سلام یه فایل بت تو سیستمم اجرا کردم سیستم رو خاموش کرد روشن کرد
الان دیگه هرروز همینه سیستمم چیکار کنم خوب شه؟
اگر فایل بت رو دارین با notepad بازش کنید و متنش رو بفرستین اینجا بررسی بشه
احتمالا دستور ریست در استارت اپ و یا برنامه زمانبندی ویندوز قرار داده شده
shutdown -s
همین بود ولی هر 7 ساعت سیستمم ریست میشه چجوری باید اوکی کنمش؟ خیلی رو مخمه ممنون میشم کمکم کنید میترسم سیستمم اسیب ببینه
با ریست بایوس درست میشه؟
دقیقا باید چیکار کنم ک این فایل از کار بیوفته؟ جایی هست حذفش کنم؟
این دستور باعث خاموش شدن سیستم میشه
اینکه هر 7 ساعت این اتفاق میفته نباید مربوط به این دستور باشه
به بایوس هم ربط نباشد داشته باشه
حالا نه دقیقا ولی تقریبا ! خب چیکار کنم؟ من فکر میکنم این یجا سیو شده اجرا میکنه خودشو باید از کجا پیداش کنم کمک کنید