آموزشی

درباره Batch File و دستورات CMD و .BAT

بچ فایل چیست

بچ فایل در واقع فایل متنی با یکی از پسوندهای bat. یا cmd. و یا btm. است و شامل یک سری دستور (Command) می‌شود که وقتی آن را اجرا می‌کنید مستقیماً وارد محیط CMD یا همان Command Prompt شده و دستورات را به‌صورت اتوماتیک و پشت سر هم انجام می‌دهد.

درباره Batch File و دستورات CMD و .BAT

شروع

برای ساخت یک فایل BAT به راحتی میتوانید برنامه Notepad ویندوز را باز کنید فرمت آن را AllFile قرار دهید. سپس پسوند آن را به bat. تغییر دهید

درباره Batch File و دستورات CMD و .BAT

می توانید دستورات را داخل همین فیل متی بنویسید و یا بر ری فایل ساخته شده کلیک راست و Edit را انتخاب کنید

درباره Batch File و دستورات CMD و .BAT

 

لیست برخی از دستورات مهم

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

#دستور و توضیحات
1VER

نمایش نسخه سیستم عامل

2ASSOC

نمایش و ویرایش پسوند فایلها با File Type ها

3CD

برای حرکت بین پوشه ها در درایو

4CLS

پاک کردن متن‌های موجود در صفحه

5COPY

برای کپی گرفتن از فایلها

6DEL

برای پاک کردن فایل‌ها و پوشه‌ها

7DIR

برای فهرست گیری از فایلهای موجود

8DATE

برای نمایش و تغییر تاریخ

9ECHO

برای نمایش یا عدم نمایش متن در دو حالت روشن و خاموش

10EXIT

برای خروج  از محیط

11MD

برای ساخت یک پوشه

12MOVE

برای انتقال فایل‌ها به محل دیگر

13PATH

برای نمایش یا مشخص نمودن مسیر

14PAUSE

توقف و انتضار برای وارد کردن یک کلید توسط کاربر

15PROMPT

برای تغییر در مسیر cmd.exe و تغییر نام خط فرمان

16RD

برای حذف پوشه‌ها و دایرکتوری‌ها

17REN

برای تغییر نام فایل‌ها و پوشه‌ها

18REM

برای نوشتن توضیحات و ریمارک نویسی

19START

برای اجرای برنامه در صفحه جدید

20TIME

نمایش  تغییر ساعت

21TYPE

برای نمایش محتوی فایل متنی

22VOL

برای نمایش سریال و نام  درایو‌ها

23ATTRIB

برای تغیر ویژگی‌ فایل‌ها و پوشه‌ها به  Read Only – System – Archive – Hidden

24CHKDSK

برای بررسی مشکلات دیسک

25CHOICE

برای ایجاد توانایی انتخاب گزینه توسط کاربر

26CMD

برای اجرا خط فرمان CMD

27COMP

برای مقایسه حجم دو فایل

28CONVERT

برای تبدیل فرمت یک درایو از FAT به NTFS

29DRIVERQUERY

برای نمایش Driver های نصب شده در ویندوز

30EXPAND

برای استخراج فایل‌های .cab

31FIND

برای پیدا کردن یک کلمه یا جمله در یک فایل متنی

32FORMAT

برای فرمت کردن یک درایو

33HELP

برای استفاده از راهنما

34IPCONFIG

برای نمایش تنظیمات و پیکربندی IP

35LABEL

برای اضافه، حذف و یا تغیر عنوان دیسک

36MORE

برای نمایش محتوای فایلهای متنی بصورت خطی

37NET

بسته به فرمان مورد استفاده، خدمات شبکه مختلفی را فراهم می کند.

  • net accounts
  • net computer
  • net config
  • net continue
  • net file
  • net group
  • net help
  • net helpmsg
  • net localgroup
  • net name
  • net pause
  • net print
  • net send
  • net session
  • net share
  • net start
  • net statistics
  • net stop
  • net time
  • net use
  • net user
  • net view
38PING

برای ارسال پکت‌ها به یک آدرس و انتظار برای رسیدن جواب در بستر شبکه

39SHUTDOWN

برای خاموش و ریستارت و Logoff کردن

Shutdown /s

Shutdown /r

Shutdown /l
40SORT

برای مرتب‌سازی یک ورودی و نمایش بر اساس حروف الفبا

41SUBST

برای ساخت درایو مجازی

42SYSTEMINFO

برای نمایش اطلاعات سیستم

43TASKKILL

برای بستن برنامه‌ها و پرسس‌های در اجرا

44TASKLIST

برای فهرست گیری از برنامه‌ها و پرسس‌های در اجرا

45XCOPY

برای کپی و انتقال فایل‌ها و پوشه‌ها

46TREE

برای فهرست‌گیری از پوشه‌ها و فایل‌های بصورت درختی

47FC

برای بررسی تفاوت دو فایل

48 

DISKPARTبرنامه مدیریت پارتیشن در خط فرمان، امان ایجاد،حذف، تغییر و تبدیل GPT به MBR یا Dynamic به Static

49TITLE

برای تغییر عنوان صفحه

50SET

برای تعیین متغییر

 

توجه داشته باشیدکه کلیه دستورات CMD در فایل‌های Batch file قابل اجرا می‌باشد

 

چند مثال کاربردی:

باز کردن سایت‌های

یک فایل 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

درباره Batch File و دستورات CMD و .BAT

توضیح:
با دستور @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

درباره Batch File و دستورات CMD و .BAT

توضیح:
با دستور @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

درباره Batch File و دستورات CMD و .BAT

توضیح:

با دستور @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

درباره Batch File و دستورات CMD و .BAT

توضیح:

با دستور @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

درباره Batch File و دستورات CMD و .BAT

توضیح:

با دستور @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

درباره Batch File و دستورات CMD و .BAT

توضیح:

با دستور @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\"
))

 

پوشه مثال:درباره Batch File و دستورات CMD و .BAT

با اجرا فایل به این صورت مرتب ‌می‌شوددرباره Batch File و دستورات CMD و .BAT

توضیح:

سطح این اسکریپ پیشرفته می‌باشد و کمی گیج کننده به نظر می‌آید

با دستور @echo off غیر تعاملی بودن را فعال میکنیم

rem یک توضیح برای خودمات نوشته‌ایم که این فایل برای چه کاریست

FOR یک چرخه ایجاد میکنم

%%a به معنی کار با تک‌تک فایل‌های موجود در فولدری است که فایل bat در آن اجرا می‌شود.

(“.\”) به معنی فولدر ریشه‌ای است.

%~xa برای بررسی پسوند و فرمت فایل می‌باشد

NEQ : مساوی نبودن پشوند‌ها را بررسی می‌کند

mkdir “%%~xa” یک پوه هم‌نام پسوند فایل ایجاد می‌کند

move “%%a” “%%~dpa%%~xa\” فایل‌ها با پسوند مشابه را به دوشه با پسوند مسابه انتقال می‌دهد

 


کد رنگ‌های قابل استفاده:

0 = سیاه8 = خاکستری
1 = آبی9 = آبی روشن
2 = سبزA = سیز روشن
 3=ابیB = آبی روشن
4  قرمزC = قرمز روشن
5 = بنفشD = بنفش روشن
6 = زردE = زرد روشن
7 = سفیدF = نقره‌ای

 

 

منابع: + + +

 

امیر فدائیان

عاشق تکنولوژی هستم،مشغول برنامه نویسی و همچنین پشتیبانی و نصب سیستم های نظارتی و حفاظتی هست، در اين وبلاگ علاوه بر اينكه دفترچه ياداشتي براي خودم هست ،تجربیات و دانسته‌هام در حوزه نرم‌افزار ،اينترنت ،تلفن همراه و ... را منتشر ميكنم. Programming languages: Delphi, Kotlin, Python, SQL Server

نوشته های مشابه

‫18 دیدگاه ها

  1. سلام دوست عزیز خسته نباشید میخواهم بدیدجما یک سوال بپرسیدم من یک سری فلیلهای متنی دارم که خیلی زیادن حدود 1000 تا و همشون تو یک فولدر هستند و می خواهم به انتهای هر کدوم از این فایلهای متنی یک ردیف خالی اضافه کنم چون وقتی میخوام اونها رو به همدیگه بچسبونم متونی که در انتهای هر فایل تکست هستن به جمله قبلی می چسبن ولی در واقع باید روی یک خط جدید به فایل تکست قبلی بچسبه پس باید یه خط خالی در انتهای هر تکست قرار بگیره لطفا یک فایل. Bat بهم یاد بدید که بشه باهاش این کار و کرد. با تشکر فراوان.

  2. سلام
    میخواستم با batch برنامه ای بنویسم که دو رشته از من بگیرد.یکی متن و دیگری یک کلید و سپس متن من را بر اساس آن کلید ، رمزنگاری کند و برایم بنویسد
    اگه میشه راهنمایی کنید ممنون میشم

  3. سلام وقتتون بخیر من برای پینگ گرفتن از دستور :
    @echo off
    title pinging http://www.GOOGLE.com
    echo TEST: Pinging Google
    ping google.com -t
    استفاده میکنم ولی فقط مرتب پشت هم دستور TEST: Pinging Google چاپ میشود مشکل چیه

  4. با سلام
    جهت کپی روزانه فایل های backup از یک سیستم به سیستمی دیگر (سیستم مقصد با IP آدرس و نام کاربری کاربر موردنظر تعیین شود) میتوان از فایل بچ استفاده کرد؟ لطفا راهنمایی بفرمایید که کد فایل بچ به صورت باید نوشته شود.

  5. سلام
    میخوام یک لینک رو توسط گوگل کروم به شکل autostart اجرا کنم
    موفق هم شدم
    ولی میخوام به صورت fullscreen باشه
    آیا کدی براش وجود داره
    @echo off
    start chrome “http://localhost/ashow/”
    @echo off
    END
    taskkil /f /im ashow.bat

  6. سلام یه فایل بت تو سیستمم اجرا کردم سیستم رو خاموش کرد روشن کرد
    الان دیگه هرروز همینه سیستمم چیکار کنم خوب شه؟

      1. shutdown -s
        همین بود ولی هر 7 ساعت سیستمم ریست میشه چجوری باید اوکی کنمش؟ خیلی رو مخمه ممنون میشم کمکم کنید میترسم سیستمم اسیب ببینه

      2. با ریست بایوس درست میشه؟
        دقیقا باید چیکار کنم ک این فایل از کار بیوفته؟ جایی هست حذفش کنم؟

      1. حالا نه دقیقا ولی تقریبا ! خب چیکار کنم؟ من فکر میکنم این یجا سیو شده اجرا میکنه خودشو باید از کجا پیداش کنم کمک کنید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا