12/08/2018, 15:44

Batch Script

Shell trên Linux thì bá đạo rồi, nhưng mà mình thích dùng Windows hơn, và không phải ai cũng biết được hết những thứ cmd mang lại cho mình, bởi vì có ai dùng đâu. Bài này mình sẽ tìm hiểu cmd trên windows làm được những gì. Tổng quan Batch Script là tập tin chứa một loạt các command hoặc các ...

Shell trên Linux thì bá đạo rồi, nhưng mà mình thích dùng Windows hơn, và không phải ai cũng biết được hết những thứ cmd mang lại cho mình, bởi vì có ai dùng đâu. Bài này mình sẽ tìm hiểu cmd trên windows làm được những gì.

Tổng quan

Batch Script là tập tin chứa một loạt các command hoặc các đường dẫn tới command. Batch Script được kết hợp để tự động hoá các chuỗi lệnh lặp lại một cách tự nhiên. Một số tính năng của Batch Script:

  • Có thể đọc các đầu vào từ người dùng để xử lý script với đầu vào được cho.
  • Có cấu trúc điều khiển: for, if, while, switch.
  • Hỗ trợ các tính năng: function và array.
  • Hỗ trợ regular expressions
  • Có thể include các mã lập trình khác như Perl. Các tập tin script này có phần mở rộng là BAT hoặc CMD. Các tập tin kiểu này được nhận diện và thực thi thông qua một giao diện (đôi khi được gọi là shell) được cung cấp bởi một tệp hệ thống được gọi là trình thông dịch lệnh (command interpreter). Trên Windows, trình thông dịch này được gọi là cmd.exe.

Môi trường

Thường chỉ cần dùng notepad là đủ viết batch script. Để chạy file bat, cần dùng cmd.exe

Commands

Một số lệnh batch được sử dụng thường xuyên:

ver

Gõ trực tiếp trên cmd hoặc tạo file có nội dung:

@echo off 
ver

Kết quả

C:Userslight>ver
Microsoft Windows [Version 10.0.15063]

assoc

Hiển thị tất cả các phần mở rộng được hỗ trợ bởi windows và chương trình (đã cài) dùng để chạy file có phần mở rộng đó

@echo off 
assoc > C:lists.txt 
assoc | find “.doc” > C:listsdoc.txt

Ta thấy file có đuôi là .avi thì được mở bằng windows media player 11 hay file .bmp được mở bằng Paint... File listsdoc.txt sẽ chứa các kết quả liên quan tới từ .doc

cd

Dùng để di chuyển tới thư mục khác hoặc hiển thị đường dẫn tới thư mục hiện tại. Ví dụ:

@echo off
Rem The cd without any parameters is used to display the current working directory
cd
Rem Changing the path to Program Files
cd Program Files
cd
Rem Changing the path to Program Files
cd %USERPROFILE%
cd
Rem Changing to the parent directory
cd..
cd
Rem Changing to the parent directory two levels up
cd....
cd

Chạy file bat được kết quả:

C:Userslight
C:Program Files
C:Userslight
C:Users
C:

Cái lệnh Rem kia sẽ được nói ở đoạn sau. Cả @echo off nữa, cũng nói ở đoạn sau.

cls

Xóa sạch màn hình hiện tại. Tất nhiên là nó sẽ làm sạch màn hình hiện tại nên không có gì để ví dụ cả.

copy

Sao chép file từ chỗ này qua chỗ kia. Ví dụ:

@echo off
cd
Rem Copies lists.txt to the present working directory. If there is no destination identified , it defaults to the present working directory.
copy c:lists.txt
Rem The file lists.txt will be copied from C: to C:	p location
copy C:lists.txt c:	p
Rem Quotation marks are required if the file name contains spaces
copy “C:My File.txt”
Rem Copies all the files in F drive which have the txt file extension to the current working directory copy
F:*.txt
Rem Copies all files from dirA to dirB. Note that directories nested in dirA will not be copied
copy C:dirA dirB

del

Xóa file, không xóa được thư mục.

@echo off 
Rem Deletes the file lists.txt in C: 
del C:lists.txt 
Rem Deletes all files recursively in all nested directories
del /s *.txt 
Rem Deletes all files recursively in all nested directories , but asks for the confirmation from the user first 
Del /p /s *.txt

dir

Liệt kê các thư mục trong thư mục hiện tại.

@echo off
Rem All the directory listings from C: will be routed to the file lists.txt
dir C:>C:lists.txt
Rem Lists all directories and subdirectories recursively
dir /s
Rem Lists the contents of the directory and all subdirectories recursively, one file per line, displaying complete path for each listed file or directory.
dir /s /b
Rem Lists all files with .txt extension.
dir *.txt
Rem Includes hidden files and system files in the listing.
dir /a
Rem Lists hidden files only.
dir /ah

Kết quả

C:Userslight>test.bat
Access is denied.
 Volume in drive C is WINDOWS 10
 Volume Serial Number is 641B-562B

 Directory of C:Userslight

07/26/2017  11:33 PM    <DIR>          .
07/26/2017  11:33 PM    <DIR>          ..
07/13/2017  08:07 PM    <DIR>          .android
05/19/2017  09:39 PM                41 .bash_history
07/12/2017  07:35 PM    <DIR>          .BigNox
03/26/2017  11:51 PM    <DIR>          .config
03/26/2017  11:51 PM    <DIR>          .cordova
03/09/2017  06:26 PM    <DIR>          .eclipse
12/24/2016  09:37 PM                68 .gitconfig
03/26/2017  11:51 PM    <DIR>          .ionic
04/23/2017  09:59 PM    <DIR>          .keras
03/26/2017  11:12 PM                 0 .node_repl_history
03/09/2017  06:26 PM    <DIR>          .p2
04/16/2017  04:55 PM                 5 .rediscli_history
04/16/2017  03:57 PM    <DIR>          .ssh
04/23/2017  02:34 PM    <DIR>          .VirtualBox
06/27/2017  10:26 PM            36,871 battery-report.html
07/13/2017  08:07 PM    <DIR>          Contacts
07/25/2017  07:17 PM    <DIR>          Desktop
07/13/2017  08:07 PM    <DIR>          Documents
07/24/2017  08:47 PM    <DIR>          Downloads
04/16/2017  03:44 PM    <DIR>          Envs
...............
...............

date

Thời gian của hệ thống.

@echo off 
echo %DATE%
C:Userslight>echo %date%
Wed 07/26/2017

echo

Hiển thị các thông báo, hoặc bật tắt hiển thị chạy các lệnh khác sau nó. Ví dụ

Rem Turns the echo on so that each command will be shown as executed 
echo on 
echo "Hello World" 
Rem Turns the echo off so that each command will not be shown when executed 
@echo off 
echo "Hello World" 
Rem Displays the contents of the PATH variable 
echo %PATH%

Kết quả:

C:Userslight>test.bat

C:Userslight>Rem Turns the echo on so that each command will be shown as executed

C:Userslight>echo on

C:Userslight>echo "Hello World"
"Hello World"

C:Userslight>Rem Turns the echo off so that each command will not be shown when executed
"Hello World"
C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:WINDOWSSystem32WindowsPowerShellv1.0;C:Program Files (x86)Gitcmd;C:ProgramDataComposerSetupin;C:Program Files
odejs;E:Program FilesIBMRosecommon;E:Program FilesPythonScripts;E:Program FilesPython;C:UserslightAppDataLocalMicrosoftWindowsApps;C:Program Files (x86)GnuWin32in;E:Program Filesphp-7.1.2;C:UserslightAppDataRoamingComposervendorin;C:UserslightAppDataRoaming
pm;

exit

Sẽ thoát khỏi DOS console:

@echo off 
echo "Hello World" 
exit

Đoạn trên sẽ in ra Hello World rồi tắt cửa sổ cmd luôn.

md

Lệnh batch này tạo ra một thư mục mới trong vị trí hiện tại.

@echo off 
md newdir 
cd newdir 
cd Rem “Goes back to the parent directory and create 2 directories” 
cd.. 
md newdir1 newdir1 
cd newdir1 
cd 
cd.. 
cd newdir2 
cd

move

Lệnh này chuyển các tệp hoặc thư mục giữa các thư mục khác nhau.

@echo off
Rem Moves the file list.txt to the directory c:	p
move C:lists.txt c:	p
Rem Renames directory Dir1 to Dir2, assuming Dir1 is a directory and Dir2 does not exist. 
move Dir1 Dir2
Rem Moves the file lists.txt to the current directory.
move C:lists.txt

path

Lệnh batch này hiển thị hoặc thiết lập biến đường dẫn (windows path variable)

@echo off 
Echo %PATH%
C:Userslight>test.bat
C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:WINDOWSSystem32WindowsPowerShellv1.0;C:Program Files (x86)Gitcmd;C:ProgramDataComposerSetupin;C:Program Files
odejs;E:Program FilesIBMRosecommon;E:Program FilesPythonScripts;E:Program FilesPython;C:UserslightAppDataLocalMicrosoftWindowsApps;C:Program Files (x86)GnuWin32in;E:Program Filesphp-7.1.2;C:UserslightAppDataRoamingComposervendorin;C:UserslightAppDataRoaming
pm;

pause

Lệnh batch này nhắc nhở người dùng và đợi đầu vào được nhập.

C:Userslight>pause
Press any key to continue . . .

prompt

Lệnh này có thể được sử dụng để thay đổi hoặc đặt lại cmd.exe

C:Userslight>prompt myprompt$G

myprompt>echo "hihi"
"hihi"

myprompt>date
The current date is: Thu 07/27/2017
Enter the new date: (mm-dd-yy)

$G là dấu lớn hơn > đc đặt sau từ myprompt

rd

Lệnh này xóa bỏ các thư mục, nhưng các thư mục phải trống rỗng trước khi chúng có thể được xóa.

@echo off
Rem removes the directory called newdir
rd C:
ewdir
Rem removes 2 directories
rd Dir1 Dir2
Rem Removes directory with spaces
rd "Application A"
Rem Removes the directory Dir1 including all the files and subdirectories in it rd /s Dir1
Rem Removes the directory Dir1 including all the files and subdirectories in it but asks for a user confirmation first.
rd /q /s Dir1

ren

Đổi tên file hoặc thư mục.

@echo off 
ren C:lists.txt C:
ewlists.txt

File list.txt sẽ được đổi tên thành newlist.txt

rem

Lệnh này dùng để viết chú thích trong file bat, nội dung phía sau lệnh này không được thực thi.

@echo off 
REM This is a batch file

start

Lệnh này dùng để mở 1 chương trình trong 1 cửa sổ mới hoặc mở 1 tập tin.

@echo off
start notepad.exe

time

Thiết lập hay hiển thị thời gian

C:Userslight>time
The current time is:  0:08:30.02
Enter the new time:

type

Lệnh này ghi ra nội dùng của 1 file hay nhiều file ra màn hình cmd

C:Userslight>type list.txt
.386=vxdfile
.3g2=WMP11.AssocFile.3G2
.3gp=WMP11.AssocFile.3GP
.3gp2=WMP11.AssocFile.3G2
.3gpp=WMP11.AssocFile.3GP
.8ba=Photoshop.PlugIn
.8bc=Photoshop.PlugIn
.8be=Photoshop.PlugIn
.8bf=Photoshop.PlugIn
.8bi=Photoshop.PlugIn
.8bp=Photoshop.PlugIn
.8bs=Photoshop.PlugIn
.8bx=Photoshop.PlugIn
.8by=Photoshop.PlugIn
.8li=Photoshop.PlugIn
.aac=WMP11.AssocFile.ADTS
................
................

vol

Hiển thị nhãn của volume hiện tại.

C:UsersNguyen The Thao>vol
 Volume in drive C has no label.
 Volume Serial Number is 569E-82CD

attrib

Hiển thị hoặc thiết lập các thuộc tính của các tệp trong thư mục hiện tại.

@echo off
Rem Displays the attribites of the file in the current directory
Attrib
Rem Displays the attributes of the file lists.txt
attrib C:	plists.txt
Rem Adds the "Read-only" attribute to the file.
attrib +r C:	plists.txt
Attrib C:	plists.txt
Rem Removes the "Archived" attribute from the file
attrib -a C:	plists.txt
Attrib C:	plists.txt
A           C:	passoclst.txt
A           C:	pList.cmd
A           C:	plists.txt
A           C:	plistsA.txt
A           C:	plists.txt
A    R      C:	plists.txt
     R      C:	plists.txt

chkdsk

Check disk - kiểm tra ổ cứng

C:Windowssystem32>chkdsk
The type of the file system is NTFS.

WARNING!  /F parameter not specified.
Running CHKDSK in read-only mode.

Stage 1: Examining basic file system structure ...
  244224 file records processed.
File verification completed.
  6478 large file records processed.
  0 bad file records processed.

Stage 2: Examining file name linkage ...
....

choice

Lệnh này cung cấp một danh sách các tùy chọn cho người dùng.

@echo off 
echo "What is the file size you what" 
echo "A:10MB" 
echo "B:20MB" 
echo "C:30MB" 
choice /c ABC /m "What is your option A , B or C"

C:UsersNguyen The Thao>test.bat
"What is the file size you what"
"A:10MB"
"B:20MB"
"C:30MB"
What is your option A , B or C [A,B,C]?

cmd

Lệnh này khởi tạo lại 1 instance mới của cmd hiện tại.

comp

Lệnh này so sánh kích thước của 2 tập tin.

C:UsersNguyen The Thao>comp test.bat nuuid.ini
Comparing test.bat and nuuid.ini...
Files are different sizes.

Compare more files (Y/N) ?

convert

Lệnh này chuyển đổi 1 volume từ FAT16, hay FAT32 sang định dạng NTFS.

driverquery

Hiển thị các driver được cài đặt

C:UsersNguyen The Thao>driverquery

Module Name  Display Name           Driver Type   Link Date
============ ====================== ============= ======================
1394ohci     1394 OHCI Compliant Ho Kernel        12/11/2006 4:44:38 AM
3ware        3ware                  Kernel        5/19/2015 5:28:03 AM
ACPI         Microsoft ACPI Driver  Kernel        12/9/1975 6:17:08 PM
AcpiDev      ACPI Devices driver    Kernel        12/7/1993 6:22:19 PM
acpiex       Microsoft ACPIEx Drive Kernel        3/1/2087 8:53:50 PM
acpipagr     ACPI Processor Aggrega Kernel        1/24/2081 8:36:36 PM
AcpiPmi      ACPI Power Meter Drive Kernel        11/20/2006 9:20:15 AM
acpitime     ACPI Wake Alarm Driver Kernel        2/9/1974 7:10:30 PM
ADP80XX      ADP80XX                Kernel        4/10/2015 3:49:48 AM
AFD          Ancillary Function Dri Kernel        3/25/2096 11:36:43 PM
ahcache      Application Compatibil Kernel        7/29/2004 11:52:50 AM
AmdK8        AMD K8 Processor Drive Kernel        6/16/2040 2:17:43 PM
AmdPPM       AMD Processor Driver   Kernel        12/24/2077 4:48:10 AM
amdsata      amdsata                Kernel        5/14/2015 7:14:52 PM
amdsbs       amdsbs                 Kernel        12/12/2012 4:21:44 AM
amdxata      amdxata                Kernel        5/1/2015 7:55:35 AM
AppID        AppID Driver           Kernel        3/18/2072 7:13:51 AM
applockerflt Smartlocker Filter Dri Kernel        9/17/2101 4:17:41 PM
AppvStrm     AppvStrm               File System   11/30/2078 4:40:53 PM
AppvVemgr    AppvVemgr              File System   4/29/2039 4:17:05 PM
AppvVfs      AppvVfs                File System   4/20/2058 2:11:18 AM
arcsas       Adaptec SAS/SATA-II RA Kernel        4/10/2015 2:12:07 AM
AsyncMac     RAS Asynchronous Media Kernel        8/8/2097 9:12:49 PM
atapi        IDE Channel            Kernel        11/28/2000 6:57:51 AM
................
....................

expand

Lệnh này giải nén file định dạng .cab

@echo off 
EXPAND excel.cab

find

Lệnh này tìm kiếm 1 chuỗi trong file hoặc trong đầu vào nào đó.

C:UsersNguyen The Thao>find "abc" test.bat

---------- TEST.BAT

format

Định dạng lại ổ cứng.

@echo off 
format D:

help

Cung cấp thông tin trợ giúp về các lệnh khác

C:UsersNguyen The Thao>help
For more information on a specific command, type HELP command-name
ASSOC          Displays or modifies file extension associations.
ATTRIB         Displays or changes file attributes.
BREAK          Sets or clears extended CTRL+C checking.
BCDEDIT        Sets properties in boot database to control boot loading.
CACLS          Displays or modifies access control lists (ACLs) of files.
CALL           Calls one batch program from another.
CD             Displays the name of or changes the current directory.
CHCP           Displays or sets the active code page number.
CHDIR          Displays the name of or changes the current directory.
CHKDSK         Checks a disk and displays a status report.
CHKNTFS        Displays or modifies the checking of disk at boot time.
CLS            Clears the screen.
.....................

ipconfig

Lệnh này chắc mọi người dùng thường xuyên, kiểm tra thông tin cấu hình IP

C:UsersNguyen The Thao>ipconfig

Windows IP Configuration


Ethernet adapter Ethernet:

   Connection-specific DNS Suffix  . : xvideos.com
   Link-local IPv6 Address . . . . . : fe80::8dc6:f032:a31f:8e11%11
   IPv4 Address. . . . . . . . . . . : 192.168.14.203
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.14.254

label

Thêm, xóa hoặc đặt 1 nhãn cho ổ cứng.

C:UsersNguyen The Thao>label
Volume in drive C: has no label
Volume Serial Number is 569E-82CD
Volume label (32 characters, ENTER for none)?

more

Lệnh này hiển thị nội dung của một tệp hoặc nhiều tệp, mỗi lần một màn hình.

cmd
@echo off
More C:	plists.txt
Directory of C:Program Files

net

Cung cấp các dịch vụ mạng khác nhau, tùy thuộc vào lệnh được sử dụng.

C:UsersNguyen The Thao>net
The syntax of this command is:

NET
   [ ACCOUNTS | COMPUTER | CONFIG | CONTINUE | FILE | GROUP | HELP |
     HELPMSG | LOCALGROUP | PAUSE | SESSION | SHARE | START |
     STATISTICS | STOP | TIME | USE | USER | VIEW ]

ví dụ

C:UsersNguyen The Thao>net view
Server Name            Remark

-------------------------------------------------------------------------------
XXXX                 XXX's computer
XXXX-2QDRGMU
XXXX-PC       xxxx-pc server (Samba, Ubuntu)
XXXX-LT       xxxx-lt server (Samba, Ubuntu)
XXXX                 hatt server (Samba, Ubuntu)
The command completed successfully.

ping

QUá quen thuộc rồi, ai chơi game mà chả phải check cái này

C:UsersNguyen The Thao>ping google.com.vn

Pinging google.com.vn [216.58.200.3] with 32 bytes of data:
Reply from 216.58.200.3: bytes=32 time=23ms TTL=56
Reply from 216.58.200.3: bytes=32 time=22ms TTL=56
Reply from 216.58.200.3: bytes=32 time=23ms TTL=56
Reply from 216.58.200.3: bytes=32 time=22ms TTL=56

Ping statistics for 216.58.200.3:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 22ms, Maximum = 23ms, Average = 22ms

shutdown

Đăng xuất, hoặc tắt máy tính

sort

Sắp xếp đầu vào theo thứ tự A - Z hoặc Z - A

C:UsersNguyen The Thao>sort test.txt
forget that because
GTA game my child
Hood hapit
I played in PlayStation
San Andreas I can not

subst

Lệnh này gán một ký hiệu ổ đĩa cho một thư mục, hiển thị hoặc xóa bỏ sự gán ghép hiện có trên 1 thư mục.

systeminfo

Lệnh này hiển thị cấu hình của máy tính và hệ điều hành của nó.

C:UsersNguyen The Thao>systeminfo

Host Name:                 DESKTOP-E3P1T0J
OS Name:                   Microsoft Windows 10 Pro
OS Version:                10.0.15063 N/A Build 15063
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Standalone Workstation
OS Build Type:             Multiprocessor Free
Registered Owner:          Windows User
Registered Organization:
Product ID:                00331-10000-00001-AA423
Original Install Date:     6/1/2017, 1:18:11 AM
System Boot Time:          7/24/2017, 7:41:49 AM
System Manufacturer:       MSI
System Model:              MS-7A15
System Type:               x64-based PC
Processor(s):              1 Processor(s) Installed.
                           [01]: Intel64 Family 6 Model 94 Stepping 3 GenuineIntel ~2611 Mhz
BIOS Version:              American Megatrends Inc. 1.50, 12/16/2016
Windows Directory:         C:Windows
...................

taskkill

Lệnh này kết thúc một hoặc nhiều task.

@echo off 
Taskkill /im mspaint.exe

tasklist

Liệt kê danh sách task và PID

C:UsersNguyen The Thao>tasklist

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
System Idle Process              0 Services                   0          8 K
System                           4 Services                   0      2,436 K
smss.exe                       356 Services                   0        264 K
csrss.exe                      508 Services                   0      1,788 K
wininit.exe                    608 Services                   0        908 K
services.exe                   684 Services                   0      6,052 K
lsass.exe                      692 Services                   0      9,872 K
svchost.exe                    876 Services                   0        904 K
svchost.exe                    900 Services                   0     14,984 K
fontdrvhost.exe                916 Services                   0        408 K
svchost.exe                    328 Services                   0      8,744 K
svchost.exe                    540 Services                   0      2,756 K
svchost.exe                   1076 Services                   0      1,640 K
.......................

xcopy

Copy file hoặc thư mục 1 cách xịn hơn.

C:UsersNguyen The Thao>Xcopy test.bat hihi.test
Does hihi.test specify a file name
or directory name on the target
(F = file, D = directory)? F
C:test.bat
1 File(s) copied

tree

Lệnh này hiển thị một cây của tất cả các thư mục con của thư mục hiện tại đến bất kỳ mức độ nào.

C:UsersNguyen The Thao>tree
Folder PATH listing
Volume serial number is 000000BB 569E:82CD
C:.
├───.android
├───.BigNox
├───.PhpStorm2017.1
│   ├───config
│   │   ├───codestyles
│   │   ├───colors
│   │   ├───eval
│   │   ├───options
│   │   ├───plugins
│   │   └───tasks
│   └───system
│       ├───caches
│       ├───conversion
│       ├───extResources
│       ├───frameworks
│       │   └───detection
│       ├───index
│       │   ├───.persistent
│       │   │   ├───duplicatesindex
│       │   │   ├───idindex
│       │   │   ├───todoindex
│       │   │   └───trigram.index
│       │   ├───angularjs.app.index
│       │   ├───angularjs.template.cache
│       │   ├───angularjs.ui.router.views.index
│       │   ├───compassfunctionsindex
│       │   ├───css.template.selectors
│       │   ├───cssindex
│       │   ├───domfileindex
│       │   ├───drupal.hook.name
..........................

fc

Lệnh này liệt kê sự khác biệt thực sự giữa hai tệp tin.

C:UsersNguyen The Thao>fc test.txt inst.ini
Comparing files test.txt and INST.INI
***** test.txt
San Andreas I can not
forget that because
I played in PlayStation
GTA game my child
Hood hapit
***** INST.INI
[General]
install_timestamp=1499408542
*****

diskpart

Lệnh này hiển thị và cấu hình các thuộc tính của phân vùng đĩa.

set

Hiển thị danh sách các biến môi trường trên hệ thống hiện tại.

C:UsersNguyen The Thao>set
ALLUSERSPROFILE=C:ProgramData
APPDATA=C:UsersNguyen The ThaoAppDataRoaming
asl.log=Destination=file
ChocolateyInstall=C:ProgramDatachocolatey
ChocolateyLastPathUpdate=Wed Jun  7 15:18:41 2017
CommonProgramFiles=C:Program FilesCommon Files
CommonProgramFiles(x86)=C:Program Files (x86)Common Files
CommonProgramW6432=C:Program FilesCommon Files
COMPUTERNAME=DESKTOP-E3P1T0J
ComSpec=C:Windowssystem32cmd.exe
FPS_BROWSER_APP_PROFILE_STRING=Internet Explorer
FPS_BROWSER_USER_PROFILE_STRING=Default
...............

title

Đặt tiêu đề được hiển thị trong cửa sổ cmd

Cú pháp

ECHO Command

Theo mặc định, batch file sẽ hiển thị lệnh của nó khi nó chạy. Mục đích của lệnh đầu tiên này là tắt màn hình hiển thị này. echo off tắt các lệnh tiếp theo, dấu @ phía trước để tắt chính nó.

Documentation

Để chú thích hay để lại comment trong code của mình, ta dùng lệnh Rem, ví dụ đã có ở phía trên.

Variables

  • Command Line Arguments
@echo off 
echo %1 
echo %2 
echo %3
C:UsersNguyen The Thao>test.bat 23 43 54
23
43
54
  • Set Command
@echo off 
set message=Hello World 
echo %message%
C:UsersNguyen The Thao>test.bat
Hello World
  • Numeric
@echo off 
SET /A a=5 
SET /A b=10 
SET /A c=%a% + %b% 
echo %c% 
SET /A c=%a% - %b% 
echo %c% 
SET /A c=%b% / %a% 
echo %c% 
SET /A c=%b% * %a% 
echo %c%
C:UsersNguyen The Thao>test.bat
15
-5
2
50
  • Local và Global Variables
@echo off 
set globalvar=5
SETLOCAL
set var=13145
set /A var=%var% + 5
echo %var%
echo %globalvar%
ENDLOCAL
C:UsersNguyen The Thao>test.bat
13150
5
  • Environment Variables
@echo off 
echo %TEMP%
C:UsersNguyen The Thao>test.bat
C:UsersNGUYEN~1AppDataLocalTemp

Comments

Có 2 cách để ghi chú trong bat. đó là dùng Rem như đã nói, thứ hai là dùng ::

@echo off 
:: This program just displays Hello World 
set message=Hello World 
echo %message%

Arrays

  • Khởi tạo mảng: có 2 cách để khởi tạo 1 mảng:
set a[0]=1
set list=1 2 3 4
  • truy cập mảng
echo %a[0]%
  • chỉnh sửa giá trị của mảng
@echo off 
set a[0]=1 
set a[1]=2 
set a[2]=3 
Rem Adding an element at the end of an array 
Set a[3]=4 
echo The last element of the array is %a[3]%
Rem The result is: The last element of the array is 4
  • lặp qua các phần tử của mảng
@echo off 
setlocal enabledelayedexpansion 
set topic[0]=comments 
set topic[1]=variables 
set topic[2]=Arrays 
set topic[3]=Decision making 
set topic[4]=Time and date 
set topic[5]=Operators 

for /l %%n in (0,1,5) do ( 
   echo !topic[%%n]! 
)

Kết quả

Comments 
variables 
Arrays 
Decision making 
Time and date 
Operators
  • độ dài mảng: không có cách nào khác ngoài đếm qua số lần lặp qua các phần tử của mảng
@echo off 
set Arr[0]=1 
set Arr[1]=2 
set Arr[2]=3 
set Arr[3]=4 
set "x=0" 
:SymLoop 

if defined Arr[%x%] ( 
   call echo %%Arr[%x%]%% 
   set /a "x+=1"
   GOTO :SymLoop 
)
echo "The length of the array is" %x%
  • Tạo cấu trúc trong mảng
@echo off 
set len=3 
set obj[0].Name=Joe 
set obj[0].ID=1 
set obj[1].Name=Mark 
set obj[1].ID=2 
set obj[2].Name=Mohan 
set obj[2].ID=3 
set i=0 
:loop 

if %i% equ %len% goto :eof 
set cur.Name= 
set cur.ID=

for /f "usebackq delims==.tokens=1-3" %%j in (`set obj[%i%]`) do ( 
   set cur.%%k=%%l 
) 
echo Name=%cur.Name% 
echo Value=%cur.ID% 
set /a i=%i%+1 
goto loop

Kết quả

Name=Joe 
Value=1 
Name=Mark 
Value=2 
Name=Mohan 
Value=3

Kết Luận

  • Do bài hơi dài rồi mà vẫn còn khá nhiều thứ nữa vẫn chưa được viết, thế nên bài này sẽ có phần sau. Phần sau này sẽ nói về String, Cấu trúc rẽ nhánh if else, Các phép tính toán, I/O, và một số thứ khác.
  • Cảm ơn tới Google và Sitepoint - Batch Script
0