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