Batch Script Cơ Bản Cùng Làm Quen Với Ngôn Ngữ Hệ Thống Windows

  • Contact
  • About
  • Rules & Privacy
ITBLOGNOTE | Knowledge Is Power

Header Ads Widget

ITBLOGNOTE | Knowledge Is Power

Ticker

6/recent/ticker-posts HomeWindowsShellBatch Script cơ bản cùng làm quen với ngôn ngữ hệ thống Windows Batch Script cơ bản cùng làm quen với ngôn ngữ hệ thống Windows Batch script có khó không? Không khó đâu bạn, chỉ vài dòng cơ bản bạn đã có thể tạo được một chương trình. Nó có thể làm được gì ư? Virus? Nghiêm túc đấy thời kỳ đầu nó được tạo ra đơn giản bằng cách này thôi. Qua thời gian ngày càng tinh vi hơn thì nó được thể hiện bằng nhiều ngôn ngữ khác nhau. Hầu hết virus được tạo ra với mục đích xấu nhưng cũng không ít virus được tạo ra nhằm giúp giải quyết nhiều công việc phức tạp mà bản thân quyền hạn của một số chương trình chưa làm được. Batch script có chứa những dòng lệnh đơn giản nhưng mạnh mẽ, nếu kết hợp khéo léo những script với nhau vào một file thực thi có đuôi mở rộng là .cmd hay .bat (batch file) bạn có thể tạo nên một chương trình giúp ta làm được nhiều việc thú vị. Cách viết một batch file Bạn vẫn có thể tạo một chương trình bằng cách gõ từng lệnh lên command prompt rồi enter, nhưng chẳng ai rảnh làm như vậy cả, viết vào file thực thi rồi chạy file đó hay hơn. Vậy cần phải chuẩn bị công cụ nào hỗ trợ không? Không nhất thiết nhé, bản thân Windows đã có đủ những công cụ cần cho bạn, việc của bạn là bắt tay vào làm thôi. Bạn có thể viết qua trình Notepad mặc định của Windows, nhưng nếu muốn code dễ nhìn hơn bạn có thể sử dụng Notepad++ (riêng mình thì thích sử dụng Notepad Mod hơn) 1. Một chương trình đơn giản code: @echo off title %~nx0 color 0e mode con lines=18 cols=70 echo. echo Hello World! pause exit Ý nghĩa Kết quả Lưu ý: Nếu bạn không muốn hiện dòng "Press any key to continue . . ." bạn sửa lệnh pause thành pause >nul lúc này chỉ có dấu nhắc thay vì hiện dòng chữ như trên. Lệnh >nul bạn cũng có thể đặt phía sau các lệnh copy, rename, hay delete để ẩn thông báo, giúp giao diện dòng lệnh được gọn gàng hơn. 2. Đặt biến, nhập dữ liệu đầu vào Trong một chương trình có những đại lượng thay đổi liên tục và được sử dụng trong các câu lệnh tiếp theo, để hạn chế thao tác, giúp ta tự động hóa nhiều quá trình liên tục batch script hỗ trợ đặt biến set name= x (với x là số hoặc chuỗi) set /a name= x (với x là số) @echo off set /a count= 1 set /a count= %count% + 5 echo the answer is %count% pause>nul Để nhập dữ liệu đầu vào: số, chuỗi... ta sử dụng câu lệnh set /p name= "chuỗi gợi ý nhập dữ liệu" @echo off set /p input= input your name ^> echo Your name is %input% pause>nul 3. Câu điều kiện Chắc chắn một điều khi bạn bắt đầu xây dựng những chương trình lớn hơn sẽ có nhiều trường hợp xảy ra mà chương trình phải chạy những đoạn script cho phù hợp. Để giải quyết vấn đề đó batch script hỗ trợ câu điều kiện nếu ... thì hoặc nếu không ... thì @echo off set /p input= input your name ^> if %input% == itblognote echo He is my boss if not %input% == tiblognote echo I don't know him pause>nul Cách thể hiện khác @echo off set /p input= input your name ^> if %input% == itblognote (echo He is my boss) else (echo I don't know him) pause>nul 4. Định nghĩa bước nhảy cho từng cụm script Một chương trình chính là tập hợp của nhiều đoạn script có chức năng khác nhau mà nên. Nhưng cách thức hoạt động của một batch file là chạy từng dòng lệnh từ trên xuống. Vậy nếu tôi muốn thực hiện cụm script chức năng thứ hai hay thứ n trước thì phải làm sao? Đơn giản thôi nhé, batch script hỗ trợ đặt nhãn (:name) và lệnh nhảy cóc (goto :name) :loop echo Hello World! goto :loop Chúc mừng, bạn đã biết cách tạo một vòng lặp rồi đấy. Chức năng của đoạn script trên sẽ giúp in trên màn hình chuỗi Hello World! vô hạn, chỉ có thể dừng lại khi bạn tắt cửa sổ command prompt Nếu ta kết hợp câu điều kiện với nhãn và lệnh nhảy cóc ta có thể tạo ra một menu cho chương trình @echo off echo -------------------------------- echo [ 1 ] Option 1 [ 2 ] Option 2 echo -------------------------------- set /p option= Input your option [ ? ] ^> f %option% == 1 goto :option1 if %option% == 2 goto :option2 echo Invalid Input & color 4f & pause>nul & exist :option1 echo your option is %option% pause>nul :option2 echo your option is %option% pause>nul 5. Tạo một file text có đuôi mở rộng bất kỳ Trong khi lập trình, đôi lúc bạn cần phải xuất một vài giá trị ra một file cụ thể nào đó, file này có thể là một file trung gian để là đầu vào dữ liệu cho đoạn script khác khi biến dữ liệu thay đổi liên tục. Đôi lúc file này là một file cấu hình bạn muốn tạo ra để cung cấp cho một chương trình khác sử dụng. Đôi lúc nó chỉ là một file nhật ký thông thường ghi chú lại những dấu vết mà chương trình vừa hoạt động. Batch script hỗ trợ tạo file với cú pháp như thế này: >"đường dẫn file muốn tạo" ( echo nội dung ) File author.txt có nội dung là niemtin007 sẽ được tạo ra cùng thư mục với batch file có nội dung dưới >"%~dp0\author.txt" ( echo niemtin007 ) File author.txt có nội dung là niemtin007 sẽ được tạo ra tại ổ C:\ với batch file có nội dung dưới >"C:\author.txt" ( echo niemtin007 ) 6. Đọc và lấy dữ liệu từ một file text Câu lệnh dưới đây sẽ giúp đọc file theo từng dòng và xuất ra giá trị của dòng cuối cùng mà nó đọc được @echo off for /f "tokens=*" %%b in (C:\author.txt) do set name=%%b echo the author is %name% pause>nul Lệnh for ... in ... do rất hữu ích và nó cũng có rất nhiều biến thể, dưới đây là một đoạn script giúp tớ xác định disk number từ giá trị disk letter khi cắm USB hay ổ cứng di động vào, phục vụ cho một chương trình nhỏ giúp cài đặt công cụ multiboot toolkit lên USB/HDD for /f "tokens=2 delims= " %%b in ( 'WMIC Path Win32_LogicalDiskToPartition Get Antecedent^, Dependent ^| find "E:"' ) do set disk=%%b set /a disk=%disk:~1,1% Ta cùng phân tích nhé: Trước tiên tớ dùng WMIC (Windows Management Instrumentation Command-line) tức là công cụ quản lý Windows dưới giao diện dòng lệnh WMIC Path Win32_LogicalDiskToPartition Get Antecedent, Dependent Có gì đó sai sai... Tại sao trên batch file trước dấu , hay | hay > lại có ký tự ^ Đơn giản chúng nó là các ký tự đặc biệt, khi viết thành batch file để khi chạy thông qua command promt mà nó hiểu được thì cần thêm ký tự ^ Còn khi chạy trực tiếp trên command promt ta không cần thêm ký tự đó WMIC Path Win32_LogicalDiskToPartition Get Antecedent, Dependent | find "E:" Nếu xem giá trị được in ra trên màn hình là một bảng thì giá trị tokens=2 của đoạn script chính là cột thứ 2. Nhưng tôi đâu thấy có cái cột nào đâu? Hãy để ý nhé, giá trị delims= " trước dấu hai phẩy có một khoảng trắng đúng không nào ^^ vậy đấy, khoảng trắng chính là cái phân cách một chuỗi dài thành nhiều cột. Ở trên đây ta thấy có tất thảy 4 cột đúng không nào, giá trị cột thứ 2 tớ cần chính là #0, các câu lệnh phía dưới chỉ là hỗ trợ để trừ chuỗi và lấy ra giá trị cần tìm của tớ là số 0 Vậy ổ E:\ mà tớ cần tìm nằm ở disk 0. Nếu ta thử thay khoảng trắng bằng dấu , trong giá trị delims=," thì sao? Lúc này ta chỉ có 2 cột: cột 1 là: \\NIEMTIN007\root\cimv2:Win32_DiskPartition.DeviceID="Disk #0 cột 2 là: Partition #6" \\NIEMTIN007\root\cimv2:Win32_LogicalDisk.DeviceID="E:" Bằng cách trừ chuỗi ta cũng có thể tìm ra giá trị cần để gán vào một biến cụ thể phải không nào ^^ Thế đấy, ngôn ngữ cũng chỉ là công cụ, cái chính là hãy để cho trí tưởng tượng của bạn bay cao bay xa, và nhớ rằng trí tưởng tượng không có giới hạn hãy để nó tự do bay nhảy, tớ tin rằng bạn sẽ tạo nên nhiều chương trình thú vị và hãy chia sẻ nó cho cộng đồng ^^ 7. Tận dụng chế độ dòng lệnh của những tool có sẵn để xây dựng một thứ gì đó lớn hơn Để phát triển nhân loại luôn sử dụng những thành tựu đã có trong quá khứ và tiếp tục phát huy. Chẳng ai lại đi phát minh lại chiếc bánh xe cả, trong lập trình cũng thế. Không phải tự nhiên lại tồn tại một cộng đồng mang tên là "cộng đồng mã nguồn mở" mà cũng chẳng phải tự nhiên mà nhiều công cụ lại có hỗ trợ chế độ dòng lệnh. Ở dưới đây là một đoạn code giúp tự động repartion cho USB để làm sạch bảng phân vùng của USB trước khi tạo boot cho nó mà mình ứng dụng thông qua công cụ bootice %~dp0bootice.exe /DEVICE=%disk% /partitions /repartition /usb-hdd /fstype=fat32 /quiet Bạn có thắc mắc là vì sao tớ biết được dòng lệnh này không? Ở phần help đó bạn, ở một số tool không có GUI giao diện bạn chỉ cần mở Command Prompt từ folder chứa file .exe của tool đó và gõ tên file cùng với lệnh --help. Bạn sẽ nhận được sự giúp đỡ Nguồn: niemtin007 Tags: Programming WindowsShell
  • Newer
  • Older
Thành Phát IT

Posted by: Thành Phát IT

You may like these posts

Post a Comment

5 Comments

  1. Arnold DK24/10/21 10:36

    man this is so professional and well done. great job. thanks for sharing these information with all of us. Kinemaster Lite

    ReplyDeleteReplies
      Reply
  2. supriyo27/3/23 02:33

    Here is the information about Molly Yeh Net Worth? visit now to read the article

    ReplyDeleteReplies
      Reply
  3. supriyo12/6/23 15:05

    Recent Post of our site P0014 Hyundai Code Demystified: Causes, Symptoms, and Solutions

    ReplyDeleteReplies
      Reply
  4. Ema Alfonso29/1/24 23:30

    Very Awesome and Help full Article. It really helps me. thanks for sharing this.Ooze Pen Blinking Green

    ReplyDeleteReplies
      Reply
  5. Oliver Emma25/2/24 15:43

    Great Post!! Thank you for your informative information. InsiderFeeds provides a platform for entertainment and biography-related content submission. Whether it's articles or biographical information, we're here to share informative and engaging content with our audience. Feel free to contribute and explore a variety of topics within entertainment and biography. We appreciate your interest and look forward to seeing your submissions. We appreciate your interest and look forward to seeing your submissions.

    ReplyDeleteReplies
      Reply
Add commentLoad more...

Vài lời muốn nói:* Không được nhận xét thô tục bởi mình biết các bạn là những người văn minh.* Pass giải nén mặt định là itblognote hoặc itblognote.com nếu có Pass khác thì mình sẽ ghim trong bài viết.* Click vào quảng cáo và chia sẻ bài viết để mình có thêm động lực viết bài nhé.

Translate

Social Plugin

About Blog

Xin chào các bạn, mình là Phát hiện tại mình là một DevOps Engineer và mình xây dựng Blog này với tiêu chí đúng với cái tên "ITBLOGNOTE.COM" của nó, là nơi mà mình sẻ lưu trữ lại những kiến thức mà bản thân đã tích lũy được trong đó 80% bài viết về IT | System Admin | DevOps | Security | System Programming và 20% bài viết về những điều hay trong cuộc sống lẫn các kiến thức khác để chia sẻ cùng các bạn, đây cũng như là kho lưu trữ Note Public tổng hợp của cá nhân mình, với phương châm: "Nâng cao kiến thức bản thân bằng cách chia sẻ, nhận đóng góp từ mọi người!"

Fanpage

Labels

  • Container 7
  • DevOps 31
  • KaliLinux 6
  • Linux 102
  • TricksHacking 22
  • TricksLinux 48
  • TricksOther 55
  • TricksWindows 49

My Music

Info

  • INFO
  • TOOLS

Random Posts

3/random/post-list

Recent in Linux

3/Linux/post-list

Popular Posts

Phần mềm NSSM tạo services cho Windows

Phần mềm NSSM tạo services cho Windows

Sưu tầm Key của Microsoft Visual Studio, SQL Server, Windows Server

Sưu tầm Key của Microsoft Visual Studio, SQL Server, Windows Server

Cài đặt vCenter Server Appliance (VCSA) 6.7 thật chi tiết trên ESXI

Cài đặt vCenter Server Appliance (VCSA) 6.7 thật chi tiết trên ESXI

DMCA.com Protection Status

Menu Footer Widget

  • Home
  • Contact
  • About
  • Rules & Privacy
Copyright © ITBLOGNOTE | Knowledge Is Power

Từ khóa » Học Batch Script