CMD là phần mềm giao diện lệnh sử dụng cho hệ điều hành Window, một tiện ích của Microsoft, mọi hệ điều hành đằng sau giao diện người dùng là sử lý bởi command line. Bài này mình sẽ trình bầy sơ qua các kiến thức cơ bản về lập trình và cách sử dụng tập lệnh trong cmd. Căn cứ vào đó bạn có cái nhìn tổng quan.
REM chu giai
Dừng màn hình – pause screen Một số trương trình BAT thoát cửa sổ sau khi thực thi hoàn tất, bạn có thể cho dừng màn hình để theo dõi hoặc sử dụng thêm, bằng cách chèn thêm lệnh:
pause
– Thoát cmd exit
In chuỗi
@echo hello world!
Mặc định các lệnh command line bạn viết trong file .bat sẽ hiện thị ra console, nhưng nếu muốn không cho show từng lệnh ra và chỉ hiển thị kết quả thì thêm dòng này vào đầu file.
@echo off
Ngày tháng In ngày hiện tại.
Kết quả, ví dụ:
The current date is: 11/11/2014
In thời gian hiện tại.
Result:
The current time is: 10:34:57,27
Mở file/FILE Sử dụng lệnh start nếu bạn muốn mở file có trong máy tính thông qua cmd. VD:
start 1.txt start c:/1.txt
Hoặc mở địa chỉ trang web trên trình duyệt
start http://www.hoangweb.com
Khai báo biến.
set FLEX_SDK=D:FLASHsetupsflex_sdk_4.6_2
để sử dụng biến, bạn đặt tên biến bởi cặp ký tự % như thế này: %FLEX_SDK% và in giá trị biến ra console.
@echo %FLEX_SDK%
Cách biến đặc biệt – Thư mục C:/Users/Admin %USERPROFILE%
– Trả về tên account user hiện tại. %USERNAME%
Mảng – Gọi lệnh cmd khác, lấy kết quả là nảng đưa vào biến. Chú ý: sử dụng ngoặc đơn: ‘ không dùng ngoặc kép ” sẽ sai. VD:
set files=('dir /b c*.class')
Liệt kê mảng sử dụng vòng lặp for do.
@echo off for /f %%f in ('dir /b *.jpg') do ( echo %%f )
Ví dụ trên liệt kê tất cả các file .jpg ở thư mục chứa script này, nếu có.
Bạn có thể gán mảng vào biến, như ví dụ ở trên chúng ta thay thế với biến files.
for /f %%f in %files% do ( echo %%f )
Lưu ý: Để ý tạo biến mới trong lệnh for không dùng ‘set’ thay vào đó bạn viết 2 ký tự %% đằng trước tên biến và cách truy cập biến cũng giống như vậy. Không được dùng cách lấy biến thông thường: %f%
Tạo mảng mới.
set arrayline[0]=############ set arrayline[1]=#..........# set arrayline[2]=#..........# set arrayline[3]=#..........# set arrayline[4]=#..........# set arrayline[5]=#..........# set arrayline[6]=#..........# set arrayline[7]=#..........# set arrayline[8]=#..........# set arrayline[9]=#..........# set arrayline[10]=#..........# set arrayline[11]=#..........# set arrayline[12]=############
Duyệt các phần tử có trong mảng với lệnh for-do.
for %%x in %arrayline% do ( %%x %x% )
Ví dụ:
@echo off setlocal enabledelayedexpansion set arrayline[0]=############ set arrayline[1]=#..........# set arrayline[10]=#..........# set arrayline[11]=#..........# set arrayline[12]=############ ::read it using a FOR /L statement for %%x in %arrayline% do ( %%x %x% ) pause
Khai báo thư viện – thiết lập biến môi trường bằng lệnh
setx JAVA_HOME "C:Program Files (x86)Javajdk1.7.0_04"
Nếu các thư viện bạn muốn chía sẻ cho mọi tài khoản người dùng trong windows, với tham số “-m”.
setx -m JAVA_HOME "C:Program Files (x86)Javajdk1.7.0_04"
Sử dụng lệnh start bạn có thể mở trang gửi email của google hoặc mở ngay ứng dụng Microsoft Outlook để gửi mail với nội dung bạn viết sẵn.
start mailto:[email protected] @echo off :Mail FOR /F "TOKENS=2*" %%A IN ('DATE/T') DO SET DATE=%%A FOR /F %%A IN ('TIME/T') DO SET TIME=%%A START mailto:[email protected]?subject=Thiet%%20ke%%20web%%20Hoangweb.com^&body=At%%20%DATE%,%%20%TIME%,%%20user%%20%USERNAME%%%20encountered%%20the%%20following%%20drive%%20mapping%%20error(s)%%20on%%20%COMPUTERNAME%:%%0D%%0A%BODY% GOTO :EOF
Kết quả máy tính của mình đã mở Outlook express sau đó với nội dung chỉ định sẵn, người dùng chỉ việc nhấn nút send để gửi đến email người nhận:
Tìm và thay thế chuỗi. Ví dụ sau thay thế chuỗi ‘chair’ thành từ ‘table’ lưu bởi biến word.
@echo off setlocal ENABLEDELAYEDEXPANSION set word=table set str="jump over the chair" set str=%str:chair= !word!% echo %str%
Cách khác:
set word=table set str="jump over the chair" call set str=%%str:chair=%word%%% echo %str%
Bạn có thể sử dụng biến tìm chuỗi chứa mọi ký tự bao gồm dấu cách, thay nội dung chuỗi bằng tên biến vd: %var1%.
@echo off set find=chair 123 set word=table set str="jump over the chair 123" call set str=%%str:%find%=%word%%% echo %str%
– Phát biểu điều kiện.
– Nhảy đến nhãn và chạy tiếp lệnh
goto nhan1 :nhan1 echo heelo !
Xuất nội dung ra file
Thay vì in chuỗi ra console, kết quả của lệnh sẽ ghi vào file bạn chỉ định, ví dụ trên lưu thông tin ngày tháng vào file chúng tôi trong thư mục hiện tại cmd đang làm việc.
Ví dụ khác, mình xuất nội dung của bảng wp_users trong csdl mysql sử dụng XAMPP. Trước tiên đảm bảo dịch vụ mysql đã bật bằng cách mở XAMPP Control Panel và nhấn vào start tại dòng module MySQL.
Hiển thị nhấu nhắc kèm thông báo nhập dữ liệu.
set /p var1="Insert your name?" @echo %var1%
Lấy nội dung nhập từ người dùng và lưu vào biến ‘var1’. Cuối cùng in chuỗi này ra màn hình. Hoặc viết như thế này cũng có tác dụng tương đương:
set /p "var1=Insert your name?"
Làm việc với file & folder
Xóa file: del file-name
Xóa folder.
rmdir directoryname rmdir /S directoryname #use /S to delete a non empty directory rmdir /Q /S directoryname #delete without being asked for confirmation rmdir /Q /S "folder 1" #You can specify the directory name in quotes.
Kiểm tra sự tồn tại của folder/file? chúng ta sử dụng cú pháp exist. Ví dụ kiểm tra FLEX_SDK có cài đặt trong máy tính. Nếu lệnh sau trả về true nghĩa là trong máy tính của bạn có.
exist "%FLEX_SDK%bin"
Sử dụng trong câu lệnh điều kiện.
if exist "2.jpg" ( @echo "exists 2.jpg" ) if exist "c:folder1" ( echo "found your folder." )
Nếu bạn không nhớ tên file, có thể sử dụng ký tự wildcat.
::chỉ định nhiều file cùng một định dạng if exist "*.jpg" ( @echo "found any images file like .jpg" )
– Liệt kê tất cả các file có trong thư mục.
dir /b c:*.class
Giải thích: Tham số ‘/b’: trả về nguyên tên file & mở rộng (VD: 1.png), và bỏ qua các thông tin khác của file như ngày tạo, kích thước… Ví dụ sau duyệt các file:
::list files sử dụng for, với tham số /f for /f %%f in ('dir /b c:*.class') do ( echo %%f %%~nf )