Batch Script - คู่มือฉบับย่อ

Batch Script ถูกรวมเข้ากับลำดับคำสั่งโดยอัตโนมัติซึ่งมีลักษณะซ้ำ ๆ กัน การเขียนสคริปต์เป็นวิธีที่เราสามารถบรรเทาความจำเป็นนี้ได้โดยการจัดลำดับคำสั่งเหล่านี้โดยอัตโนมัติเพื่อให้ชีวิตของคนในเชลล์ง่ายขึ้นและมีประสิทธิผลมากขึ้น ในองค์กรส่วนใหญ่ Batch Script จะรวมเข้าด้วยกันไม่ทางใดก็ทางหนึ่งเพื่อทำให้สิ่งต่างๆเป็นไปโดยอัตโนมัติ

คุณลักษณะบางอย่างของ Batch Script ได้แก่ -

  • สามารถอ่านอินพุตจากผู้ใช้เพื่อให้สามารถประมวลผลเพิ่มเติมได้

  • มีโครงสร้างการควบคุมเช่น for, if, while, switch เพื่อการทำงานอัตโนมัติและการเขียนสคริปต์ที่ดีขึ้น

  • รองรับคุณสมบัติขั้นสูงเช่นฟังก์ชันและอาร์เรย์

  • รองรับนิพจน์ทั่วไป

  • สามารถรวมรหัสการเขียนโปรแกรมอื่น ๆ เช่น Perl

การใช้งาน Batch Script โดยทั่วไป ได้แก่ -

  • การตั้งค่าเซิร์ฟเวอร์เพื่อวัตถุประสงค์ที่แตกต่างกัน

  • ทำกิจกรรมการดูแลทำความสะอาดโดยอัตโนมัติเช่นการลบไฟล์ที่ไม่ต้องการหรือล็อกไฟล์

  • การปรับใช้แอปพลิเคชันโดยอัตโนมัติจากสภาพแวดล้อมหนึ่งไปยังอีกสภาพแวดล้อมหนึ่ง

  • การติดตั้งโปรแกรมบนเครื่องต่างๆในครั้งเดียว

สคริปต์แบตช์จะถูกเก็บไว้ในไฟล์ข้อความธรรมดาที่มีบรรทัดพร้อมคำสั่งที่ดำเนินการตามลำดับทีละบรรทัด ไฟล์เหล่านี้มีนามสกุลพิเศษ BAT หรือ CMD ไฟล์ประเภทนี้ได้รับการยอมรับและดำเนินการผ่านอินเทอร์เฟซ (บางครั้งเรียกว่าเชลล์) ที่จัดเตรียมโดยไฟล์ระบบที่เรียกว่าตัวแปลคำสั่ง ในระบบ Windows ตัวแปลนี้เรียกว่า cmd.exe

การเรียกใช้ไฟล์แบตช์เป็นเรื่องง่ายๆเพียงแค่คลิกที่มัน ไฟล์แบตช์ยังสามารถเรียกใช้ในพรอมต์คำสั่งหรือบรรทัดเริ่ม - รัน ในกรณีเช่นนี้ต้องใช้ชื่อพา ธ แบบเต็มเว้นแต่ว่าพา ธ ของไฟล์อยู่ในสภาพแวดล้อมพา ธ ต่อไปนี้เป็นตัวอย่างง่ายๆของ Batch Script Batch Script นี้เมื่อรันจะลบไฟล์ทั้งหมดในไดเร็กทอรีปัจจุบัน

:: Deletes All files in the Current Directory With Prompts and Warnings
::(Hidden, System, and Read-Only Files are Not Affected)
:: @ECHO OFF
DEL . DR

บทนี้อธิบายสภาพแวดล้อมที่เกี่ยวข้องกับ Batch Script

การเขียนและการดำเนินการ

โดยปกติในการสร้างไฟล์แบตช์จะใช้แผ่นจดบันทึก นี่เป็นเครื่องมือที่ง่ายที่สุดสำหรับการสร้างไฟล์แบตช์ ถัดไปคือสภาพแวดล้อมการดำเนินการสำหรับชุดสคริปต์ ในระบบ Windows สามารถทำได้ผ่านทาง command prompt หรือ cmd.exe ไฟล์แบตช์ทั้งหมดทำงานในสภาพแวดล้อมนี้

ต่อไปนี้เป็นวิธีต่างๆในการเปิด cmd.exe -

Method 1 - ไปที่ C: \ Windows \ System32 แล้วดับเบิลคลิกที่ไฟล์ cmd

Method 2 - ผ่านคำสั่ง run - ภาพรวมต่อไปนี้จะแสดงเพื่อค้นหา command prompt (cmd.exe) บน Windows Server 2012

เมื่อเปิด cmd.exe คุณจะเห็นหน้าจอต่อไปนี้ นี่จะเป็นสภาพแวดล้อมของคุณสำหรับการรันสคริปต์แบตช์ของคุณ

ตัวแปรสภาพแวดล้อม

ในการรันไฟล์แบตช์จากพรอมต์คำสั่งคุณต้องไปที่ตำแหน่งที่จัดเก็บไฟล์แบตช์หรือคุณสามารถป้อนตำแหน่งไฟล์ในตัวแปรสภาพแวดล้อมพา ธ ดังนั้นสมมติว่าไฟล์แบตช์ถูกเก็บไว้ในตำแหน่งC:\Application\binคุณจะต้องทำตามคำแนะนำเหล่านี้สำหรับการรวมตัวแปร PATH

ระบบปฏิบัติการ เอาต์พุต
Windows ต่อท้ายสตริง; C:\Application\binไปยังจุดสิ้นสุดของตัวแปรระบบ PATH

ในบทนี้เราจะดูคำสั่งแบตช์ที่ใช้บ่อยบางคำสั่ง

ส. เลขที่ คำสั่งและคำอธิบาย
1 VER

คำสั่งชุดนี้แสดงเวอร์ชันของ MS-DOS ที่คุณใช้

2 ASSOC

นี่คือคำสั่งแบตช์ที่เชื่อมโยงส่วนขยายกับประเภทไฟล์ (FTYPE) แสดงการเชื่อมโยงที่มีอยู่หรือลบการเชื่อมโยง

3 ซีดี

คำสั่งแบตช์นี้ช่วยในการเปลี่ยนแปลงไดเร็กทอรีอื่นหรือแสดงไดเร็กทอรีปัจจุบัน

4 CLS

คำสั่งแบตช์นี้จะล้างหน้าจอ

5 สำเนา

คำสั่งแบตช์นี้ใช้สำหรับการคัดลอกไฟล์จากตำแหน่งหนึ่งไปยังอีกที่หนึ่ง

6 DEL

คำสั่งแบตช์นี้จะลบไฟล์และไม่ใช่ไดเร็กทอรี

7 DIR

คำสั่งแบตช์นี้แสดงรายการเนื้อหาของไดเร็กทอรี

8 วันที่

คำสั่งแบตช์นี้ช่วยในการค้นหาวันที่ของระบบ

9 ECHO

คำสั่งแบตช์นี้แสดงข้อความหรือเปิดหรือปิดการสะท้อนคำสั่ง

10 ออก

คำสั่งแบตช์นี้ออกจากคอนโซล DOS

11 นพ

คำสั่งแบตช์นี้สร้างไดเร็กทอรีใหม่ในตำแหน่งปัจจุบัน

12 ย้าย

คำสั่งแบตช์นี้จะย้ายไฟล์หรือไดเร็กทอรีระหว่างไดเร็กทอรี

13 เส้นทาง

คำสั่งแบตช์นี้แสดงหรือตั้งค่าตัวแปรพา ธ

14 หยุด

คำสั่งแบตช์นี้พร้อมต์ให้ผู้ใช้และรอให้ป้อนบรรทัดอินพุต

15 PROMPT

คำสั่งแบตช์นี้สามารถใช้เพื่อเปลี่ยนหรือรีเซ็ตพรอมต์ cmd.exe

16 RD

คำสั่งแบตช์นี้จะลบไดเร็กทอรีออก แต่ไดเร็กทอรีต้องว่างก่อนจึงจะสามารถลบออกได้

17 REN

เปลี่ยนชื่อไฟล์และไดเรกทอรี

18 REM

คำสั่งแบตช์นี้ใช้สำหรับหมายเหตุในไฟล์แบตช์ป้องกันไม่ให้เรียกใช้เนื้อหาของคำพูด

19 เริ่มต้น

คำสั่งแบตช์นี้เริ่มโปรแกรมในหน้าต่างใหม่หรือเปิดเอกสาร

20 เวลา

ชุดคำสั่งนี้ตั้งค่าหรือแสดงเวลา

21 ประเภท

คำสั่ง batch นี้พิมพ์เนื้อหาของไฟล์หรือไฟล์ไปยังเอาต์พุต

22 VOL

คำสั่งแบตช์นี้แสดงฉลากไดรฟ์ข้อมูล

23 ATTRIB

แสดงหรือตั้งค่าแอตทริบิวต์ของไฟล์ในไดเร็กทอรี curret

24 CHKDSK

คำสั่งแบตช์นี้ตรวจสอบดิสก์ว่ามีปัญหาหรือไม่

25 ทางเลือก

คำสั่งแบตช์นี้จัดเตรียมรายการตัวเลือกให้กับผู้ใช้

26 CMD

คำสั่งแบตช์นี้เรียกใช้อินสแตนซ์ของพรอมต์คำสั่งอื่น

27 COMP

คำสั่ง batch นี้เปรียบเทียบ 2 ไฟล์ตามขนาดไฟล์

28 แปลง

คำสั่งแบตช์นี้แปลงโวลุ่มจากระบบไฟล์ FAT16 หรือ FAT32 เป็นระบบไฟล์ NTFS

29 DRIVERQUERY

คำสั่งแบตช์นี้แสดงไดรเวอร์อุปกรณ์ที่ติดตั้งและคุณสมบัติทั้งหมด

30 ขยาย

คำสั่ง batch นี้จะแยกไฟล์จากไฟล์ cabinet. cab ที่บีบอัด

31 หา

คำสั่งแบตช์นี้ค้นหาสตริงในไฟล์หรืออินพุตเอาต์พุตบรรทัดที่ตรงกัน

32 รูปแบบ

คำสั่งแบตช์นี้จัดรูปแบบดิสก์เพื่อใช้ระบบไฟล์ที่ Windows รองรับเช่น FAT, FAT32 หรือ NTFS ซึ่งจะเขียนทับเนื้อหาก่อนหน้าของดิสก์

33 ช่วยด้วย

คำสั่งแบตช์นี้แสดงรายการคำสั่งที่มาจาก Windows

34 IPCONFIG

คำสั่งชุดนี้แสดงการกำหนดค่า Windows IP แสดงการกำหนดค่าตามการเชื่อมต่อและชื่อของการเชื่อมต่อนั้น

35 ฉลาก

คำสั่งแบตช์นี้เพิ่มตั้งค่าหรือลบป้ายชื่อดิสก์

36 มากกว่า

คำสั่งแบตช์นี้แสดงเนื้อหาของไฟล์หรือไฟล์ทีละหน้าจอ

37 สุทธิ

ให้บริการเครือข่ายต่างๆขึ้นอยู่กับคำสั่งที่ใช้

38 ปิง

คำสั่ง batch นี้จะส่งแพ็กเก็ต ICMP / IP "echo" ผ่านเครือข่ายไปยังที่อยู่ที่กำหนด

39 ปิดตัวลง

คำสั่งแบตช์นี้ปิดคอมพิวเตอร์หรือล็อกผู้ใช้ปัจจุบัน

40 จัดเรียง

คำสั่งแบตช์นี้รับอินพุตจากซอร์สไฟล์และเรียงลำดับเนื้อหาตามตัวอักษรจาก A ถึง Z หรือ Z ถึง A มันจะพิมพ์เอาต์พุตบนคอนโซล

41 ย่อย

คำสั่งแบตช์นี้กำหนดอักษรระบุไดรฟ์ให้กับโฟลเดอร์ภายในแสดงการกำหนดปัจจุบันหรือลบการกำหนด

42 SYSTEMINFO

คำสั่งแบตช์นี้แสดงการกำหนดค่าของคอมพิวเตอร์และระบบปฏิบัติการ

43 TASKKILL

คำสั่งแบตช์นี้จะสิ้นสุดงานอย่างน้อยหนึ่งงาน

44 รายการงาน

คำสั่งแบตช์นี้แสดงรายการงานรวมถึงชื่องานและรหัสกระบวนการ (PID)

45 XCOPY

คำสั่งแบตช์นี้คัดลอกไฟล์และไดเร็กทอรีด้วยวิธีขั้นสูง

46 ต้นไม้

คำสั่งแบตช์นี้แสดงโครงสร้างของไดเร็กทอรีย่อยทั้งหมดของไดเร็กทอรีปัจจุบันไปยังระดับการเรียกซ้ำหรือระดับความลึกใด ๆ

47 เอฟซี

คำสั่งแบตช์นี้แสดงความแตกต่างที่แท้จริงระหว่างสองไฟล์

48 DISKPART

คำสั่งแบตช์นี้แสดงและกำหนดค่าคุณสมบัติของดิสก์พาร์ติชัน

49 หัวข้อ

คำสั่งแบตช์นี้กำหนดหัวเรื่องที่แสดงในหน้าต่างคอนโซล

50 SET

แสดงรายการตัวแปรสภาพแวดล้อมบนระบบปัจจุบัน

ในบทนี้เราจะเรียนรู้วิธีสร้างบันทึกดำเนินการและแก้ไขไฟล์แบตช์

การสร้างไฟล์แบทช์

โดยปกติไฟล์แบตช์จะถูกสร้างขึ้นในแผ่นจดบันทึก ดังนั้นวิธีที่ง่ายที่สุดคือเปิดแผ่นจดบันทึกและป้อนคำสั่งที่จำเป็นสำหรับสคริปต์ สำหรับแบบฝึกหัดนี้ให้เปิดแผ่นจดบันทึกและป้อนข้อความต่อไปนี้

:: Deletes All files in the Current Directory With Prompts and Warnings 
::(Hidden, System, and Read-Only Files are Not Affected) 
:: 
@ECHO OFF 
DEL . 
DR

การบันทึกไฟล์แบทช์

หลังจากสร้างไฟล์แบตช์แล้วขั้นตอนต่อไปคือการบันทึกไฟล์แบตช์ของคุณ ไฟล์แบตช์มีนามสกุลเป็น. bat หรือ. cmd กฎทั่วไปบางประการที่ควรคำนึงถึงเมื่อตั้งชื่อไฟล์แบตช์ -

  • พยายามหลีกเลี่ยงช่องว่างเมื่อตั้งชื่อไฟล์แบตช์บางครั้งอาจสร้างปัญหาเมื่อถูกเรียกจากสคริปต์อื่น ๆ

  • อย่าตั้งชื่อตามไฟล์แบตช์ทั่วไปที่มีอยู่ในระบบเช่น ping.cmd

ภาพหน้าจอด้านบนแสดงวิธีบันทึกไฟล์แบตช์ เมื่อบันทึกไฟล์แบตช์ของคุณบางจุดที่ควรทราบ

  • อย่าลืมใส่. bat หรือ. cmd ต่อท้ายชื่อไฟล์
  • เลือกตัวเลือก "บันทึกเป็นประเภท" เป็น "ไฟล์ทั้งหมด"
  • ใส่ชื่อไฟล์ทั้งหมดในเครื่องหมายคำพูด“”

การเรียกใช้ไฟล์แบทช์

ต่อไปนี้เป็นขั้นตอนในการรันไฟล์แบตช์ -

  • Step 1 - เปิดพรอมต์คำสั่ง (cmd.exe)

  • Step 2 - ไปยังตำแหน่งที่เก็บไฟล์. bat หรือ. cmd

  • Step 3 - เขียนชื่อไฟล์ตามที่แสดงในภาพต่อไปนี้และกดปุ่ม Enter เพื่อเรียกใช้ไฟล์แบตช์

การแก้ไขไฟล์แบทช์

ต่อไปนี้เป็นขั้นตอนในการแก้ไขไฟล์แบตช์ที่มีอยู่

  • Step 1 - เปิด windows explorer

  • Step 2 - ไปยังตำแหน่งที่เก็บไฟล์. bat หรือ. cmd

  • Step 3- คลิกขวาที่ไฟล์แล้วเลือกตัวเลือก "แก้ไข" จากเมนูบริบท ไฟล์จะเปิดขึ้นใน Notepad เพื่อแก้ไขเพิ่มเติม

โดยปกติบรรทัดแรกในแบตช์ไฟล์มักประกอบด้วยคำสั่งต่อไปนี้

คำสั่ง ECHO

@echo off

ตามค่าเริ่มต้นไฟล์แบตช์จะแสดงคำสั่งขณะทำงาน จุดประสงค์ของคำสั่งแรกนี้คือปิดการแสดงผลนี้ คำสั่ง "echo off" จะปิดการแสดงผลสำหรับสคริปต์ทั้งหมดยกเว้นคำสั่ง "echo off" เอง เครื่องหมาย "@" ด้านหน้าทำให้คำสั่งมีผลกับตัวเองเช่นกัน

เอกสารประกอบ

ไฟล์แบตช์มักจะมีบรรทัดที่ขึ้นต้นด้วยคำสั่ง "Rem" นี่เป็นวิธีป้อนความคิดเห็นและเอกสารประกอบ คอมพิวเตอร์จะไม่สนใจสิ่งใด ๆ ในบรรทัดตาม Rem สำหรับไฟล์แบตช์ที่มีจำนวนความซับซ้อนเพิ่มขึ้นคุณควรแสดงความคิดเห็น

โปรแกรมสคริปต์ชุดแรก

มาสร้างโปรแกรมสคริปต์ชุดแรกอย่างง่ายของเรา เปิดแผ่นจดบันทึกและป้อนรหัสต่อไปนี้ บันทึกไฟล์เป็น“ List.cmd”

รหัสทำสิ่งต่อไปนี้ -

  • ใช้คำสั่ง echo off เพื่อให้แน่ใจว่าคำสั่งจะไม่แสดงเมื่อเรียกใช้โค้ด

  • คำสั่ง Rem ใช้เพื่อเพิ่มความคิดเห็นเพื่อบอกว่าไฟล์แบตช์นี้ทำอะไรกันแน่

  • คำสั่ง dir ใช้เพื่อรับเนื้อหาของตำแหน่ง C: \ Program Files

  • คำสั่ง '>' ใช้เพื่อเปลี่ยนทิศทางผลลัพธ์ไปยังไฟล์ C: \ lists.txt

  • ในที่สุดคำสั่ง echo จะใช้เพื่อบอกผู้ใช้ว่าการดำเนินการเสร็จสิ้น

@echo off 
Rem This is for listing down all the files in the directory Program files 
dir "C:\Program Files" > C:\lists.txt 
echo "The program has completed"

เมื่อดำเนินการคำสั่งดังกล่าวชื่อของไฟล์ใน C: \ Program Files จะถูกส่งไปยังไฟล์ C: \ Lists.txt และในพรอมต์คำสั่งจะมีข้อความ "โปรแกรมเสร็จสิ้น" ปรากฏขึ้น

มีตัวแปรสองประเภทในไฟล์แบตช์ หนึ่งคือสำหรับพารามิเตอร์ที่สามารถส่งผ่านได้เมื่อไฟล์แบตช์ถูกเรียกและอีกไฟล์หนึ่งทำผ่านคำสั่ง set

อาร์กิวเมนต์บรรทัดคำสั่ง

สคริปต์แบตช์สนับสนุนแนวคิดของอาร์กิวเมนต์บรรทัดคำสั่งซึ่งอาร์กิวเมนต์สามารถส่งผ่านไปยังไฟล์แบตช์เมื่อเรียกใช้ อาร์กิวเมนต์สามารถเรียกได้จากไฟล์แบตช์ผ่านตัวแปร% 1,% 2,% 3 และอื่น ๆ

ตัวอย่างต่อไปนี้แสดงไฟล์แบตช์ซึ่งยอมรับอาร์กิวเมนต์บรรทัดคำสั่ง 3 รายการและสะท้อนไปยังหน้าจอบรรทัดคำสั่ง

@echo off 
echo %1 
echo %2 
echo %3

หากชุดสคริปต์ข้างต้นถูกเก็บไว้ในไฟล์ที่เรียกว่า test.bat และเราต้องเรียกใช้แบตช์เป็น

Test.bat 1 2 3

ต่อไปนี้เป็นภาพหน้าจอของลักษณะนี้ในพรอมต์คำสั่งเมื่อไฟล์แบตช์ถูกเรียกใช้งาน

คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้

1 
2 
3

หากเราเรียกใช้ชุดงานเป็น

Example 1 2 3 4

ผลลัพธ์จะยังคงเหมือนเดิม อย่างไรก็ตามพารามิเตอร์ที่สี่จะถูกละเว้น

ตั้งค่าคำสั่ง

อีกวิธีหนึ่งในการเริ่มต้นตัวแปรคือผ่านคำสั่ง 'set' ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง set

ไวยากรณ์

set /A variable-name=value

ที่ไหน

  • variable-name คือชื่อของตัวแปรที่คุณต้องการตั้งค่า

  • value คือค่าที่ต้องตั้งค่ากับตัวแปร

  • /A – สวิตช์นี้ใช้หากค่าต้องเป็นตัวเลขตามธรรมชาติ

ตัวอย่างต่อไปนี้แสดงวิธีง่ายๆในการใช้คำสั่ง set

ตัวอย่าง

@echo off 
set message=Hello World 
echo %message%
  • ในข้อมูลโค้ดด้านบนตัวแปรที่เรียกว่าข้อความถูกกำหนดและตั้งค่าด้วยค่า "Hello World"

  • ในการแสดงค่าของตัวแปรโปรดทราบว่าตัวแปรนั้นจะต้องอยู่ในเครื่องหมาย%

เอาต์พุต

คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้

Hello World

การทำงานกับค่าตัวเลข

ในสคริปต์แบตช์ยังสามารถกำหนดตัวแปรเพื่อเก็บค่าตัวเลขได้ สามารถทำได้โดยใช้สวิตช์ / A

รหัสต่อไปนี้แสดงวิธีง่ายๆในการตั้งค่าตัวเลขด้วยสวิตช์ / A

@echo off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% + %b% 
echo %c%
  • ก่อนอื่นเราตั้งค่าของ 2 ตัวแปรคือ a และ b เป็น 5 และ 10 ตามลำดับ

  • เรากำลังเพิ่มค่าเหล่านั้นและเก็บไว้ในตัวแปร c

  • สุดท้ายเรากำลังแสดงค่าของตัวแปร c

ผลลัพธ์ของโปรแกรมข้างต้นจะเป็น 15

ตัวดำเนินการเลขคณิตทั้งหมดทำงานในไฟล์แบตช์ ตัวอย่างต่อไปนี้แสดงตัวดำเนินการทางคณิตศาสตร์ที่สามารถใช้ในไฟล์แบตช์

@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%

คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้

15 
-5 
2 
50

ตัวแปรท้องถิ่นเทียบกับทั่วโลก

ในภาษาโปรแกรมใด ๆ มีตัวเลือกในการทำเครื่องหมายตัวแปรว่ามีขอบเขตบางประเภทเช่นส่วนของรหัสที่สามารถเข้าถึงได้ โดยปกติตัวแปรที่มีขอบเขตทั่วโลกสามารถเข้าถึงได้จากโปรแกรมใดก็ได้ในขณะที่ตัวแปรที่กำหนดขอบเขตท้องถิ่นจะมีขอบเขตที่กำหนดไว้ซึ่งสามารถเข้าถึงได้

การเขียนสคริปต์ DOS ยังมีคำจำกัดความสำหรับตัวแปรที่กำหนดขอบเขตภายในและทั่วโลก โดยค่าเริ่มต้นตัวแปรจะเป็นส่วนกลางสำหรับเซสชันพรอมต์คำสั่งทั้งหมดของคุณ เรียกใช้คำสั่ง SETLOCAL เพื่อกำหนดตัวแปรให้อยู่ในขอบเขตของสคริปต์ของคุณ หลังจากเรียกใช้ SETLOCAL การกำหนดตัวแปรใด ๆ จะเปลี่ยนกลับเมื่อเรียก ENDLOCAL เรียก EXIT หรือเมื่อการดำเนินการถึงจุดสิ้นสุดของไฟล์ (EOF) ในสคริปต์ของคุณ ตัวอย่างต่อไปนี้แสดงความแตกต่างเมื่อตั้งค่าตัวแปรโลคัลและโกลบอลในสคริปต์

ตัวอย่าง

@echo off 
set globalvar = 5
SETLOCAL
set var = 13145
set /A var = %var% + 5
echo %var%
echo %globalvar%
ENDLOCAL

สิ่งสำคัญบางประการที่ควรทราบเกี่ยวกับโปรแกรมข้างต้น

  • 'globalvar' ถูกกำหนดด้วยขอบเขตส่วนกลางและพร้อมใช้งานตลอดทั้งสคริปต์

  • ตัวแปร 'var' ถูกกำหนดในขอบเขตโลคัลเนื่องจากอยู่ระหว่างบล็อก 'SETLOCAL' และ 'ENDLOCAL' ดังนั้นตัวแปรนี้จะถูกทำลายทันทีที่คำสั่ง 'ENDLOCAL' ถูกเรียกใช้งาน

เอาต์พุต

คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้

13150
5

คุณจะสังเกตเห็นว่าคำสั่ง echo% var% จะไม่ให้ผลอะไรเลยเพราะหลังจากคำสั่ง ENDLOCAL ตัวแปร 'var' จะไม่มีอยู่อีกต่อไป

การทำงานกับตัวแปรสภาพแวดล้อม

หากคุณมีตัวแปรที่จะใช้กับไฟล์แบตช์คุณควรใช้ตัวแปรสภาพแวดล้อมเสมอ เมื่อกำหนดตัวแปรสภาพแวดล้อมแล้วจะสามารถเข้าถึงได้โดยใช้เครื่องหมาย% ตัวอย่างต่อไปนี้แสดงวิธีการดู JAVA_HOME ที่กำหนดบนระบบ ตัวแปร JAVA_HOME เป็นส่วนประกอบหลักที่โดยปกติจะใช้กับแอปพลิเคชันที่หลากหลาย

@echo off 
echo %JAVA_HOME%

ผลลัพธ์จะแสดงไดเร็กทอรี JAVA_HOME ซึ่งจะขึ้นอยู่กับระบบ ต่อไปนี้เป็นตัวอย่างของผลลัพธ์

C:\Atlassian\Bitbucket\4.0.1\jre

การเพิ่มความคิดเห็นหรือเอกสารสำหรับสคริปต์ที่สร้างขึ้นถือเป็นแนวทางปฏิบัติที่ดีเสมอ สิ่งนี้จำเป็นสำหรับการดูแลรักษาสคริปต์เพื่อให้เข้าใจว่าสคริปต์ทำงานอย่างไร

ตัวอย่างเช่นพิจารณาโค้ดต่อไปนี้ซึ่งไม่มีรูปแบบของความคิดเห็น หากคนทั่วไปที่ไม่ได้พัฒนาสคริปต์ต่อไปนี้พยายามที่จะเข้าใจสคริปต์อาจต้องใช้เวลานานพอสมควรในการที่บุคคลนั้นจะเข้าใจว่าสคริปต์ทำอะไรได้บ้าง

ECHO OFF 
IF NOT "%OS%"=="Windows_NT" GOTO Syntax 
ECHO.%* | FIND "?" >NUL 
IF NOT ERRORLEVEL 1 GOTO Syntax 
IF NOT [%2]==[] GOTO Syntax 
SETLOCAL 
SET WSS= 
IF NOT [%1]==[] FOR /F "tokens = 1 delims = \ " %%A IN ('ECHO.%~1') DO SET WSS = %%A 
FOR /F "tokens = 1 delims = \ " %%a IN ('NET VIEW ^| FIND /I "\\%WSS%"') DO FOR /F 
"tokens = 1 delims = " %%A IN ('NBTSTAT -a %%a ^| FIND /I /V "%%a" ^| FIND "<03>"') 
DO ECHO.%%a %%A 
ENDLOCAL 
GOTO:EOF 
ECHO Display logged on users and their workstations. 
ECHO Usage: ACTUSR [ filter ] 
IF "%OS%"=="Windows_NT" ECHO Where: filter is the first part 
of the computer name^(s^) to be displayed

ความคิดเห็นโดยใช้คำสั่ง Rem

มีสองวิธีในการสร้างข้อคิดเห็นใน Batch Script; หนึ่งคือผ่านคำสั่ง Rem ข้อความใด ๆ ที่ตามหลังคำสั่ง Rem จะถือว่าเป็นความคิดเห็นและจะไม่ถูกดำเนินการ ต่อไปนี้เป็นไวยากรณ์ทั่วไปของคำสั่งนี้

ไวยากรณ์

Rem Remarks

โดยที่ 'หมายเหตุ' คือความคิดเห็นที่ต้องเพิ่ม

ตัวอย่างต่อไปนี้แสดงวิธีง่ายๆ Rem สามารถใช้คำสั่งได้

ตัวอย่าง

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

เอาต์พุต

คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้ คุณจะสังเกตเห็นว่าบรรทัดที่มีคำสั่ง Rem จะไม่ถูกดำเนินการ

Hello World

ความคิดเห็นโดยใช้คำชี้แจง ::

อีกวิธีในการสร้างความคิดเห็นใน Batch Script คือผ่านคำสั่ง :: ข้อความใด ๆ ที่ตามหลังคำสั่ง :: จะถือว่าเป็นความคิดเห็นและจะไม่ถูกดำเนินการ ต่อไปนี้เป็นไวยากรณ์ทั่วไปของคำสั่งนี้

ไวยากรณ์

:: Remarks

โดยที่ 'หมายเหตุ' คือความคิดเห็นที่ต้องเพิ่ม

ตัวอย่างต่อไปนี้แสดงการใช้คำสั่ง "::"

ตัวอย่าง

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

เอาต์พุต

คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้ คุณจะสังเกตเห็นว่าบรรทัดที่มีคำสั่ง :: จะไม่ถูกดำเนินการ

Hello World

Note - หากคุณมี Rem หลายบรรทัดเกินไปมันอาจทำให้โค้ดช้าลงเพราะท้ายที่สุดโค้ดแต่ละบรรทัดในไฟล์แบตช์ยังคงต้องดำเนินการ

ลองดูตัวอย่างของสคริปต์ขนาดใหญ่ที่เราเห็นในตอนต้นของหัวข้อนี้และดูว่าจะมีลักษณะอย่างไรเมื่อมีการเพิ่มเอกสารเข้าไป

::===============================================================
:: The below example is used to find computer and logged on users
::
::===============================================================
ECHO OFF 
:: Windows version check 
IF NOT "%OS%"=="Windows_NT" GOTO Syntax 
ECHO.%* | FIND "?" >NUL 
:: Command line parameter check 
IF NOT ERRORLEVEL 1 GOTO Syntax
IF NOT [%2]==[] GOTO Syntax 
:: Keep variable local 
SETLOCAL 
:: Initialize variable 
SET WSS= 
:: Parse command line parameter 
IF NOT [%1]==[] FOR /F "tokens = 1 delims = \ " %%A IN ('ECHO.%~1') DO SET WSS = %%A 
:: Use NET VIEW and NBTSTAT to find computers and logged on users 
FOR /F "tokens = 1 delims = \ " %%a IN ('NET VIEW ^| FIND /I "\\%WSS%"') DO FOR /F 
"tokens = 1 delims = " %%A IN ('NBTSTAT -a %%a ^| FIND /I /V "%%a" ^| FIND 
"<03>"') DO ECHO.%%a %%A 
:: Done 
ENDLOCAL
GOTO:EOF 
:Syntax 
ECHO Display logged on users and their workstations. 
ECHO Usage: ACTUSR [ filter ] 
IF "%OS%"=="Windows_NT" ECHO Where: filter is the first part of the 
computer name^(s^) to be displayed

ตอนนี้คุณสามารถเห็นได้ว่าโค้ดได้เข้าใจมากขึ้นสำหรับผู้ใช้ที่ไม่ได้พัฒนาโค้ดและด้วยเหตุนี้จึงสามารถดูแลรักษาได้มากขึ้น

ใน DOS สตริงคือชุดอักขระที่เรียงตามลำดับเช่น "Hello, World!"

ส. เลขที่ สตริงและคำอธิบาย
1 สร้างสตริง

สามารถสร้างสตริงใน DOS ได้ด้วยวิธีต่อไปนี้

2 สตริงว่าง

สตริงว่าง

3 การแก้ไขสตริง

การแก้ไขสตริงเป็นวิธีสร้างค่าสตริงใหม่จากการผสมของค่าคงที่ตัวแปรลิเทอรัลและนิพจน์โดยการรวมค่าไว้ในลิเทอรัลสตริง

4 การต่อสตริง

คุณสามารถใช้ตัวดำเนินการ set เพื่อเชื่อมสองสตริงหรือสตริงกับอักขระหรือสองอักขระ ต่อไปนี้เป็นตัวอย่างง่ายๆที่แสดงวิธีใช้การต่อสายอักขระ

5 ความยาวสตริง

ในการเขียนสคริปต์ DOS ไม่มีฟังก์ชันความยาวที่กำหนดไว้สำหรับการค้นหาความยาวของสตริง มีฟังก์ชันที่กำหนดเองซึ่งสามารถใช้ได้เหมือนกัน ต่อไปนี้เป็นตัวอย่างของฟังก์ชันที่กำหนดเองเพื่อดูความยาวของสตริง

6 toInt

ตัวแปรที่ถูกตั้งค่าเป็นสตริงโดยใช้ตัวแปร set สามารถแปลงเป็นจำนวนเต็มโดยใช้สวิตช์ / A ซึ่งใช้ตัวแปร set ตัวอย่างต่อไปนี้แสดงให้เห็นว่าสามารถทำได้อย่างไร

7 จัดชิดขวา

ใช้เพื่อจัดแนวข้อความไปทางขวาซึ่งโดยปกติจะใช้เพื่อปรับปรุงความสามารถในการอ่านคอลัมน์ตัวเลข

8 สตริงซ้าย

ใช้เพื่อแยกอักขระจากจุดเริ่มต้นของสตริง

9 สายกลาง

ใช้เพื่อแยกสตริงย่อยผ่านตำแหน่งของอักขระในสตริง

10 ลบ

คุณลักษณะการแทนที่สตริงยังสามารถใช้เพื่อลบสตริงย่อยออกจากสตริงอื่น

11 ลบปลายทั้งสองด้าน

ใช้เพื่อลบอักขระตัวแรกและตัวสุดท้ายของสตริง

12 ลบ Spaces ทั้งหมด

สิ่งนี้ใช้เพื่อลบช่องว่างทั้งหมดในสตริงผ่านการแทนที่

13 แทนที่สตริง

ในการแทนที่สตริงย่อยด้วยสตริงอื่นให้ใช้คุณสมบัติการแทนที่สตริง

14 สตริงขวา

ใช้เพื่อแยกอักขระจากจุดสิ้นสุดของสตริง

อาร์เรย์ไม่ได้กำหนดไว้เป็นประเภทใน Batch Script โดยเฉพาะ แต่สามารถนำไปใช้งานได้ สิ่งต่อไปนี้ต้องสังเกตเมื่อใช้อาร์เรย์ใน Batch Script

  • แต่ละองค์ประกอบของอาร์เรย์จำเป็นต้องกำหนดด้วยคำสั่ง set
  • จะต้องมีการวนซ้ำ 'for' เพื่อวนซ้ำตามค่าของอาร์เรย์

การสร้าง Array

อาร์เรย์ถูกสร้างขึ้นโดยใช้คำสั่ง set ต่อไปนี้

set a[0]=1

โดยที่ 0 คือดัชนีของอาร์เรย์และ 1 คือค่าที่กำหนดให้กับองค์ประกอบแรกของอาร์เรย์

อีกวิธีหนึ่งในการใช้อาร์เรย์คือการกำหนดรายการค่าและวนซ้ำผ่านรายการค่า ตัวอย่างต่อไปนี้แสดงให้เห็นว่าสามารถนำไปใช้งานได้อย่างไร

ตัวอย่าง

@echo off 
set list = 1 2 3 4 
(for %%a in (%list%) do ( 
   echo %%a 
))

เอาต์พุต

คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้

1
2
3
4

การเข้าถึงอาร์เรย์

คุณสามารถดึงค่าจากอาร์เรย์โดยใช้ไวยากรณ์ตัวห้อยส่งดัชนีของค่าที่คุณต้องการเรียกคืนภายในวงเล็บเหลี่ยมหลังชื่ออาร์เรย์ทันที

ตัวอย่าง

@echo off 
set a[0]=1 
echo %a[0]%

ในตัวอย่างนี้ดัชนีเริ่มต้นจาก 0 ซึ่งหมายความว่าองค์ประกอบแรกสามารถเข้าถึงได้โดยใช้ดัชนีเป็น 0 องค์ประกอบที่สองสามารถเข้าถึงได้โดยใช้ดัชนีเป็น 1 และอื่น ๆ ลองตรวจสอบตัวอย่างต่อไปนี้เพื่อสร้างเริ่มต้นและเข้าถึงอาร์เรย์ -

@echo off
set a[0] = 1 
set a[1] = 2 
set a[2] = 3 
echo The first element of the array is %a[0]% 
echo The second element of the array is %a[1]% 
echo The third element of the array is %a[2]%

คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้

The first element of the array is 1 
The second element of the array is 2 
The third element of the array is 3

การปรับเปลี่ยนอาร์เรย์

ในการเพิ่มองค์ประกอบที่ส่วนท้ายของอาร์เรย์คุณสามารถใช้องค์ประกอบชุดร่วมกับดัชนีสุดท้ายขององค์ประกอบอาร์เรย์

ตัวอย่าง

@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]%

คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้

The last element of the array is 4

คุณสามารถแก้ไของค์ประกอบที่มีอยู่ของ Array ได้โดยกำหนดค่าใหม่ที่ดัชนีที่กำหนดดังที่แสดงในตัวอย่างต่อไปนี้ -

@echo off 
set a[0] = 1 
set a[1] = 2  
set a[2] = 3 
Rem Setting the new value for the second element of the array 
Set a[1] = 5 
echo The new value of the second element of the array is %a[1]%

คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้

The new value of the second element of the array is 5

การทำซ้ำบนอาร์เรย์

การวนซ้ำบนอาร์เรย์ทำได้โดยใช้ลูป 'for' และผ่านแต่ละองค์ประกอบของอาร์เรย์ ตัวอย่างต่อไปนี้แสดงวิธีง่ายๆในการใช้อาร์เรย์

@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]! 
)

สิ่งต่อไปนี้ต้องสังเกตเกี่ยวกับโปรแกรมข้างต้น -

  • แต่ละองค์ประกอบของอาร์เรย์จำเป็นต้องกำหนดโดยเฉพาะโดยใช้คำสั่ง set

  • ลูป 'for' ที่มีพารามิเตอร์ / L สำหรับการย้ายผ่านช่วงจะใช้เพื่อวนซ้ำผ่านอาร์เรย์

เอาต์พุต

คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้

Comments 
variables 
Arrays 
Decision making 
Time and date 
Operators

ความยาวของอาร์เรย์

ความยาวของอาร์เรย์ทำได้โดยการวนซ้ำรายการค่าในอาร์เรย์เนื่องจากไม่มีฟังก์ชันโดยตรงในการกำหนดจำนวนองค์ประกอบในอาร์เรย์

@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%

เอาต์พุต

เอาต์พุตคำสั่งด้านบนสร้างเอาต์พุตต่อไปนี้

The length of the array is 4

การสร้างโครงสร้างในอาร์เรย์

โครงสร้างสามารถนำไปใช้ในไฟล์แบตช์ได้โดยใช้การเข้ารหัสเพิ่มเติมเล็กน้อยสำหรับการนำไปใช้งาน ตัวอย่างต่อไปนี้แสดงให้เห็นว่าสามารถทำได้อย่างไร

ตัวอย่าง

@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

สิ่งสำคัญต่อไปนี้ต้องสังเกตเกี่ยวกับรหัสข้างต้น

  • ตัวแปรแต่ละตัวที่กำหนดโดยใช้คำสั่ง set มี 2 ค่าที่เกี่ยวข้องกับดัชนีแต่ละตัวของอาร์เรย์

  • ตัวแปร i ถูกตั้งค่าเป็น 0 เพื่อให้เราสามารถวนซ้ำโครงสร้างได้ตามความยาวของอาร์เรย์ซึ่งเท่ากับ 3

  • เราตรวจสอบเงื่อนไขเสมอว่าค่าของ i เท่ากับค่าของ len และถ้าไม่เราวนซ้ำโค้ด

  • เราสามารถเข้าถึงแต่ละองค์ประกอบของโครงสร้างโดยใช้สัญกรณ์ obj [% i%]

เอาต์พุต

คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้

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

โครงสร้างการตัดสินใจกำหนดให้โปรแกรมเมอร์ระบุเงื่อนไขอย่างน้อยหนึ่งเงื่อนไขที่จะประเมินหรือทดสอบโดยโปรแกรมพร้อมกับคำสั่งหรือคำสั่งที่จะดำเนินการหากเงื่อนไขถูกกำหนดให้เป็น trueและเป็นทางเลือกที่จะเรียกใช้คำสั่งอื่น ๆ หากเงื่อนไขถูกกำหนดให้เป็น false.

ส. เลขที่ สตริงและคำอธิบาย
1 ถ้า Statement

คำสั่งในการตัดสินใจแรกคือคำสั่ง 'if'

2 ถ้า / else คำชี้แจง

คำสั่งในการตัดสินใจต่อไปคือคำสั่ง If / else ต่อไปนี้เป็นรูปแบบทั่วไปของคำสั่งนี้

3 ซ้อนถ้าคำสั่ง

บางครั้งมีข้อกำหนดที่จะต้องมีคำสั่ง 'if' หลายคำที่ฝังอยู่ภายในซึ่งกันและกัน ต่อไปนี้เป็นรูปแบบทั่วไปของคำสั่งนี้

ตัวดำเนินการคือสัญลักษณ์ที่บอกให้คอมไพเลอร์ดำเนินการจัดการทางคณิตศาสตร์หรือตรรกะเฉพาะ

ในสคริปต์ชุดงานสามารถใช้ตัวดำเนินการประเภทต่อไปนี้ได้

  • ตัวดำเนินการเลขคณิต
  • ตัวดำเนินการเชิงสัมพันธ์
  • ตัวดำเนินการทางตรรกะ
  • ตัวดำเนินการมอบหมาย
  • ตัวดำเนินการ Bitwise

ตัวดำเนินการเลขคณิต

ภาษาสคริปต์ชุดสนับสนุนตัวดำเนินการทางคณิตศาสตร์ปกติเป็นภาษาใดก็ได้ ต่อไปนี้เป็นตัวดำเนินการทางคณิตศาสตร์ที่พร้อมใช้งาน

แสดงตัวอย่าง

ตัวดำเนินการ คำอธิบาย ตัวอย่าง
+ การเพิ่มตัวถูกดำเนินการสองตัว 1 + 2 จะให้ 3
- ลบตัวถูกดำเนินการที่สองจากตัวแรก 2 - 1 จะให้ 1
* การคูณของตัวถูกดำเนินการทั้งสอง 2 * 2 จะให้ 4
/ การหารตัวเศษด้วยตัวส่วน 3/2 จะให้ 1.5
% ตัวดำเนินการโมดูลัสและส่วนที่เหลือหลังการหารจำนวนเต็ม / จำนวนลอย 3% 2 จะให้ 1

ตัวดำเนินการเชิงสัมพันธ์

ตัวดำเนินการเชิงสัมพันธ์อนุญาตให้เปรียบเทียบวัตถุได้ ด้านล่างนี้คือตัวดำเนินการเชิงสัมพันธ์ที่พร้อมใช้งาน

แสดงตัวอย่าง

ตัวดำเนินการ คำอธิบาย ตัวอย่าง
EQU ทดสอบความเท่าเทียมกันระหว่างสองวัตถุ 2 EQU 2 จะให้เป็นจริง
NEQ ทดสอบความแตกต่างระหว่างสองวัตถุ 3 NEQ 2 จะให้จริง
LSS ตรวจสอบว่าวัตถุด้านซ้ายน้อยกว่าตัวถูกดำเนินการด้านขวาหรือไม่ 2 LSS 3 จะให้จริง
LEQ ตรวจสอบเพื่อดูว่าวัตถุด้านซ้ายน้อยกว่าหรือเท่ากับตัวถูกดำเนินการด้านขวาหรือไม่ 2 LEQ 3 จะเป็นจริง
GTR ตรวจสอบเพื่อดูว่าวัตถุด้านซ้ายมีค่ามากกว่าตัวถูกดำเนินการด้านขวาหรือไม่ 3 GTR 2 จะให้เป็นจริง
GEQ ตรวจสอบว่าวัตถุทางซ้ายมากกว่าหรือเท่ากับตัวถูกดำเนินการด้านขวาหรือไม่ 3 GEQ 2 จะให้จริง

ตัวดำเนินการทางตรรกะ

ตัวดำเนินการทางตรรกะใช้เพื่อประเมินนิพจน์บูลีน ต่อไปนี้เป็นตัวดำเนินการทางตรรกะที่พร้อมใช้งาน

ภาษาแบตช์มีชุดตัวดำเนินการตรรกะบูลีนแบบครบชุดเช่น AND, OR, XOR แต่สำหรับเลขฐานสองเท่านั้น ไม่มีค่าใด ๆ สำหรับ TRUE หรือ FALSE ตัวดำเนินการตรรกะเดียวที่ใช้ได้สำหรับเงื่อนไขคือตัวดำเนินการ NOT

แสดงตัวอย่าง

ตัวดำเนินการ คำอธิบาย
และ นี่คือโอเปอเรเตอร์“ และ” เชิงตรรกะ
หรือ นี่คือโอเปอเรเตอร์“ หรือ” เชิงตรรกะ
ไม่ นี่คือโอเปอเรเตอร์ "ไม่ใช่" เชิงตรรกะ

ผู้ดำเนินการมอบหมาย

ภาษา Batch Script ยังมีตัวดำเนินการกำหนด ต่อไปนี้เป็นตัวดำเนินการมอบหมายที่พร้อมใช้งาน

แสดงตัวอย่าง

ตัวดำเนินการ คำอธิบาย ตัวอย่าง
+ = สิ่งนี้จะเพิ่มตัวถูกดำเนินการด้านขวาให้กับตัวถูกดำเนินการด้านซ้ายและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย

ตั้งค่า / A = 5

a + = 3

เอาต์พุตจะเป็น 8

- = สิ่งนี้จะลบตัวถูกดำเนินการด้านขวาออกจากตัวถูกดำเนินการด้านซ้ายและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย

ตั้งค่า / A = 5

a - = 3

เอาต์พุตจะเป็น 2

* = สิ่งนี้จะคูณตัวถูกดำเนินการด้านขวาด้วยตัวถูกดำเนินการด้านซ้ายและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย

ตั้งค่า / A = 5

a * = 3

เอาต์พุตจะเป็น 15

/ = สิ่งนี้แบ่งตัวถูกดำเนินการด้านซ้ายด้วยตัวถูกดำเนินการด้านขวาและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย

ตั้งค่า / A = 6

a / = 3

เอาต์พุตจะเป็น 2

% = สิ่งนี้ใช้โมดูลัสโดยใช้ตัวถูกดำเนินการสองตัวและกำหนดผลลัพธ์ให้กับตัวถูกดำเนินการด้านซ้าย

ตั้งค่า / A = 5

a% = 3

เอาต์พุตจะเป็น 2

ตัวดำเนินการ Bitwise

ตัวดำเนินการ Bitwise เป็นไปได้ในสคริปต์แบทช์ ต่อไปนี้เป็นตัวดำเนินการที่พร้อมใช้งาน

แสดงตัวอย่าง

ตัวดำเนินการ คำอธิบาย
& นี่คือโอเปอเรเตอร์“ และ” แบบบิต
| นี่คือโอเปอเรเตอร์“ หรือ” แบบบิต
^ นี่คือ "xor" แบบบิตหรือเฉพาะตัวหรือโอเปอเรเตอร์

ต่อไปนี้เป็นตารางความจริงที่แสดงตัวดำเนินการเหล่านี้

q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

วันที่และเวลาใน DOS Scripting มีคำสั่งพื้นฐานสองคำสั่งต่อไปนี้สำหรับการดึงข้อมูลวันที่และเวลาของระบบ

วันที่

คำสั่งนี้รับวันที่ของระบบ

ไวยากรณ์

DATE

ตัวอย่าง

@echo off 
echo %DATE%

เอาต์พุต

วันที่ปัจจุบันจะแสดงในพรอมต์คำสั่ง ตัวอย่างเช่น,

Mon 12/28/2015

เวลา

คำสั่งนี้กำหนดหรือแสดงเวลา

ไวยากรณ์

TIME

ตัวอย่าง

@echo off 
echo %TIME%

เอาต์พุต

เวลาของระบบปัจจุบันจะแสดงขึ้น ตัวอย่างเช่น,

22:06:52.87

ต่อไปนี้เป็นการนำไปใช้งานบางส่วนที่สามารถใช้เพื่อรับวันที่และเวลาในรูปแบบต่างๆ

วันที่ในรูปแบบปี - เดือน - วัน

ตัวอย่าง

@echo off 
echo/Today is: %year%-%month%-%day% 
goto :EOF 
setlocal ENABLEEXTENSIONS 
set t = 2&if "%date%z" LSS "A" set t = 1 

for /f "skip=1 tokens = 2-4 delims = (-)" %%a in ('echo/^|date') do ( 
   for /f "tokens = %t%-4 delims=.-/ " %%d in ('date/t') do ( 
      set %%a=%%d&set %%b=%%e&set %%c=%%f)) 
endlocal&set %1=%yy%&set %2=%mm%&set %3=%dd%&goto :EOF

เอาต์พุต

คำสั่งดังกล่าวสร้างผลลัพธ์ต่อไปนี้

Today is: 2015-12-30

มี "ไฟล์" สากลสามแบบสำหรับการป้อนข้อมูลด้วยแป้นพิมพ์การพิมพ์ข้อความบนหน้าจอและข้อผิดพลาดในการพิมพ์บนหน้าจอ ไฟล์“ Standard In” หรือที่เรียกว่าstdinมีอินพุตของโปรแกรม / สคริปต์ ไฟล์“ Standard Out” หรือที่เรียกว่าstdoutใช้ในการเขียนผลลัพธ์เพื่อแสดงบนหน้าจอ สุดท้ายไฟล์“ Standard Err” หรือที่เรียกว่าstderrมีข้อความแสดงข้อผิดพลาดที่แสดงบนหน้าจอ

ไฟล์มาตรฐานทั้งสามไฟล์นี้หรือที่เรียกว่าสตรีมมาตรฐานอ้างอิงโดยใช้หมายเลข 0, 1 และ 2 Stdin คือไฟล์ 0, stdout คือไฟล์ 1 และ stderr คือไฟล์ 2

การเปลี่ยนเส้นทางเอาต์พุต (Stdout และ Stderr)

แนวทางปฏิบัติทั่วไปอย่างหนึ่งในไฟล์แบตช์คือการส่งเอาต์พุตของโปรแกรมไปยังล็อกไฟล์ ตัวดำเนินการ> ส่งหรือเปลี่ยนเส้นทาง stdout หรือ stderr ไปยังไฟล์อื่น ตัวอย่างต่อไปนี้แสดงให้เห็นว่าสามารถทำได้อย่างไร

Dir C:\ > list.txt

ในตัวอย่างข้างต้นไฟล์ stdout ของคำสั่ง Dir C: \ ถูกเปลี่ยนเส้นทางไปยังไฟล์ list.txt

หากคุณต่อท้ายหมายเลข 2 เข้ากับตัวกรองการเปลี่ยนเส้นทางระบบจะเปลี่ยนเส้นทางไฟล์ stderr ไปยังไฟล์ lists.txt

Dir C:\ 2> list.txt

หนึ่งสามารถรวมไฟล์ stdout และ stderrสตรีมโดยใช้หมายเลขไฟล์และคำนำหน้า "&" ต่อไปนี้เป็นตัวอย่าง

DIR C:\ > lists.txt 2>&1

การระงับเอาต์พุตของโปรแกรม

ไฟล์หลอก NUL ใช้เพื่อละทิ้งผลลัพธ์ใด ๆ จากโปรแกรม ตัวอย่างต่อไปนี้แสดงให้เห็นว่าเอาต์พุตของคำสั่ง DIR ถูกละทิ้งโดยการส่งเอาต์พุตไปยัง NUL

Dir C:\ > NUL

Stdin

ในการทำงานกับ Stdin คุณต้องใช้วิธีแก้ปัญหาเพื่อให้บรรลุเป้าหมายนี้ ซึ่งสามารถทำได้โดยเปลี่ยนเส้นทาง stdin ของพรอมต์คำสั่งที่เรียกว่า CON

ตัวอย่างต่อไปนี้แสดงวิธีที่คุณสามารถเปลี่ยนทิศทางเอาต์พุตไปยังไฟล์ที่เรียกว่า lists.txt หลังจากที่คุณดำเนินการคำสั่งด้านล่างพรอมต์คำสั่งจะรับอินพุตทั้งหมดที่ผู้ใช้ป้อนจนกว่าจะได้รับอักขระ EOF ต่อมาจะส่งอินพุตทั้งหมดไปยัง file lists.txt

TYPE CON > lists.txt

โดยค่าเริ่มต้นเมื่อการดำเนินการบรรทัดคำสั่งเสร็จสิ้นควรคืนค่าศูนย์เมื่อการดำเนินการสำเร็จหรือไม่ใช่ศูนย์เมื่อการดำเนินการล้มเหลว เมื่อสคริปต์ชุดงานส่งคืนค่าที่ไม่ใช่ศูนย์หลังจากการดำเนินการล้มเหลวค่าที่ไม่ใช่ศูนย์จะระบุว่าหมายเลขข้อผิดพลาดคืออะไร จากนั้นเราจะใช้หมายเลขข้อผิดพลาดเพื่อพิจารณาว่าข้อผิดพลาดเกี่ยวกับอะไรและแก้ไขตามนั้น

ต่อไปนี้เป็นรหัสทางออกทั่วไปและคำอธิบาย

รหัสข้อผิดพลาด คำอธิบาย
0 โปรแกรมเสร็จสมบูรณ์
1 ฟังก์ชันไม่ถูกต้อง บ่งชี้ว่าการดำเนินการพยายามดำเนินการคำสั่งที่ไม่รู้จักในพรอมต์คำสั่งของ Windows cmd.exe
2 ระบบไม่พบแฟ้มที่ระบุ. ระบุว่าไม่พบไฟล์ในตำแหน่งที่ระบุ
3 ระบบไม่สามารถหาเส้นทางที่ระบุ. ระบุว่าไม่พบพา ธ ที่ระบุ
5 การเข้าถึงถูกปฏิเสธ. ระบุว่าผู้ใช้ไม่มีสิทธิ์เข้าถึงทรัพยากรที่ระบุ

9009

0x2331

โปรแกรมไม่ได้รับการยอมรับว่าเป็นคำสั่งภายในหรือภายนอกโปรแกรมที่ใช้งานได้หรือไฟล์แบตช์ ระบุว่าคำสั่งชื่อแอ็พพลิเคชันหรือพา ธ ถูกสะกดผิดเมื่อกำหนดคอนฟิก Action

221225495

0xC0000017

-1073741801

มีหน่วยความจำเสมือนไม่เพียงพอ

แสดงว่า Windows มีหน่วยความจำไม่เพียงพอ

3221225786

0xC000013A

-1073741510

แอปพลิเคชันสิ้นสุดลงเนื่องจาก CTRL + C ระบุว่าแอปพลิเคชันถูกยุติโดยแป้นพิมพ์ของผู้ใช้ป้อน CTRL + C หรือ CTRL + Break หรือปิดหน้าต่างพรอมต์คำสั่ง

3221225794

0xC0000142

-1073741502

แอปพลิเคชันไม่สามารถเริ่มต้นได้อย่างถูกต้อง ระบุว่าแอปพลิเคชันถูกเปิดใช้งานบนเดสก์ท็อปซึ่งผู้ใช้ปัจจุบันไม่มีสิทธิ์เข้าถึง อีกสาเหตุที่เป็นไปได้คือ gdi32.dll หรือ user32.dll ล้มเหลวในการเริ่มต้น

ระดับข้อผิดพลาด

ตัวแปรสภาพแวดล้อม% ERRORLEVEL% มีโค้ดส่งคืนของโปรแกรมหรือสคริปต์ที่เรียกใช้ล่าสุด

โดยค่าเริ่มต้นวิธีตรวจสอบ ERRORLEVEL คือผ่านรหัสต่อไปนี้

ไวยากรณ์

IF %ERRORLEVEL% NEQ 0 ( 
   DO_Something 
)

เป็นเรื่องปกติที่จะใช้คำสั่ง EXIT / B% ERRORLEVEL% ที่ส่วนท้ายของไฟล์แบตช์เพื่อส่งคืนรหัสข้อผิดพลาดจากไฟล์แบตช์

EXIT / B ในตอนท้ายของไฟล์แบตช์จะหยุดการทำงานของไฟล์แบตช์

ใช้ EXIT / B <exitcodes> ที่ท้ายไฟล์แบตช์เพื่อส่งคืนโค้ดส่งคืนที่กำหนดเอง

ตัวแปรสภาพแวดล้อม% ERRORLEVEL% มีระดับข้อผิดพลาดล่าสุดในไฟล์แบตช์ซึ่งเป็นรหัสข้อผิดพลาดล่าสุดจากคำสั่งสุดท้ายที่เรียกใช้ ในไฟล์แบตช์เป็นแนวทางปฏิบัติที่ดีเสมอในการใช้ตัวแปรสภาพแวดล้อมแทนค่าคงที่เนื่องจากตัวแปรเดียวกันจะขยายเป็นค่าที่แตกต่างกันในคอมพิวเตอร์เครื่องอื่น

ลองดูตัวอย่างสั้น ๆ เกี่ยวกับวิธีตรวจสอบรหัสข้อผิดพลาดจากไฟล์แบตช์

ตัวอย่าง

สมมติว่าเรามีไฟล์แบตช์ชื่อ Find.cmd ซึ่งมีรหัสต่อไปนี้ ในโค้ดเราได้กล่าวไว้อย่างชัดเจนว่าหากไม่พบไฟล์ที่เรียกว่า lists.txt เราควรตั้งค่า errorlevel เป็น 7 ในทำนองเดียวกันหากเราเห็นว่าตัวแปร userprofile ไม่ได้กำหนดไว้เราควรตั้งรหัส errorlevel เป็น 9.

if not exist c:\lists.txt exit 7 
if not defined userprofile exit 9 
exit 0

สมมติว่าเรามีไฟล์อื่นชื่อ App.cmd ที่เรียก Find.cmd ก่อน ตอนนี้ถ้า Find.cmd ส่งกลับข้อผิดพลาดซึ่งมันตั้งค่าระดับข้อผิดพลาดเป็นมากกว่า 0 มันจะออกจากโปรแกรม ในไฟล์แบตช์ต่อไปนี้หลังจากเรียก Find.cnd find แล้วมันจะตรวจสอบว่าระดับข้อผิดพลาดมากกว่า 0 หรือไม่

Call Find.cmd

if errorlevel gtr 0 exit 
echo “Successful completion”

เอาต์พุต

ในโปรแกรมข้างต้นเราสามารถมีสถานการณ์ต่อไปนี้เป็นผลลัพธ์ -

  • หากไม่มีไฟล์ c: \ lists.txt จะไม่มีอะไรแสดงในเอาต์พุตคอนโซล

  • หากไม่มีตัวแปร userprofile จะไม่มีอะไรแสดงในคอนโซลเอาต์พุต

  • หากเงื่อนไขทั้งสองข้างต้นผ่านไปแล้วสตริง“ Successful complete” จะแสดงในพรอมต์คำสั่ง

ลูป

ในบทการตัดสินใจเราได้เห็นข้อความที่ได้รับการดำเนินการทีละข้อความในลักษณะตามลำดับ นอกจากนี้การใช้งานยังสามารถทำได้ใน Batch Script เพื่อปรับเปลี่ยนโฟลว์ของการควบคุมในตรรกะของโปรแกรม จากนั้นจะจัดประเภทเป็นโฟลว์ของงบควบคุม

ส. เลขที่ ลูปและคำอธิบาย
1 ในขณะที่การดำเนินการตามคำชี้แจง

ไม่มีคำสั่ง direct while ใน Batch Script แต่เราสามารถใช้งานลูปนี้ได้อย่างง่ายดายโดยใช้คำสั่ง if และ label

2 สำหรับคำชี้แจง - แสดงรายการการดำเนินการ

โครงสร้าง "FOR" มีความสามารถในการวนซ้ำสำหรับไฟล์แบตช์ ต่อไปนี้เป็นโครงสร้างทั่วไปของคำสั่ง 'for' สำหรับการทำงานกับรายการค่า

3 วนลูปผ่านช่วง

คำสั่ง 'for' ยังมีความสามารถในการเลื่อนผ่านช่วงของค่าต่างๆ ต่อไปนี้เป็นรูปแบบทั่วไปของคำสั่ง

4 คลาสสิกสำหรับการใช้งานแบบวนซ้ำ

ต่อไปนี้เป็นคำสั่ง 'for' แบบคลาสสิกซึ่งมีอยู่ในภาษาโปรแกรมส่วนใหญ่

การวนลูปผ่านอาร์กิวเมนต์บรรทัดคำสั่ง

นอกจากนี้ยังสามารถใช้คำสั่ง 'for' เพื่อตรวจสอบอาร์กิวเมนต์บรรทัดคำสั่ง ตัวอย่างต่อไปนี้แสดงให้เห็นว่าคำสั่ง 'for' สามารถใช้เพื่อวนผ่านอาร์กิวเมนต์บรรทัดคำสั่งได้อย่างไร

ตัวอย่าง

@ECHO OFF 
:Loop 

IF "%1"=="" GOTO completed 
FOR %%F IN (%1) DO echo %%F 
SHIFT 
GOTO Loop 
:completed

เอาต์พุต

สมมติว่าโค้ดด้านบนของเราถูกเก็บไว้ในไฟล์ชื่อ Test.bat คำสั่งดังกล่าวจะสร้างผลลัพธ์ต่อไปนี้หากไฟล์แบตช์ส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่งที่ 1,2 และ 3 เป็น Test.bat 1 2 3

1 
2 
3

ส. เลขที่ ลูปและคำอธิบาย
1 การใช้งานคำสั่งหยุดพัก

คำสั่ง break ใช้เพื่อเปลี่ยนโฟลว์ของการควบคุมภายในลูปภายในภาษาโปรแกรมใด ๆ โดยปกติคำสั่ง break จะใช้ในโครงสร้างแบบวนซ้ำและใช้เพื่อทำให้เกิดการสิ้นสุดของลูปด้านในสุดในทันที

ฟังก์ชันคือชุดของคำสั่งที่จัดระเบียบร่วมกันเพื่อดำเนินงานเฉพาะ ในสคริปต์ชุดงานจะใช้วิธีการที่คล้ายกันเพื่อจัดกลุ่มคำสั่งเชิงตรรกะเข้าด้วยกันเพื่อสร้างฟังก์ชัน

เช่นเดียวกับภาษาอื่น ๆ ฟังก์ชันใน Batch Script จะทำตามขั้นตอนเดียวกัน -

  • Function Declaration - จะบอกคอมไพเลอร์เกี่ยวกับชื่อของฟังก์ชันประเภทการส่งคืนและพารามิเตอร์

  • Function Definition - ให้ตัวจริงของฟังก์ชั่น

นิยามฟังก์ชัน

ใน Batch Script ฟังก์ชันถูกกำหนดโดยใช้คำสั่ง label เมื่อฟังก์ชันถูกกำหนดขึ้นใหม่อาจใช้ค่าหนึ่งหรือหลายค่าเป็น 'พารามิเตอร์' อินพุตให้กับฟังก์ชันประมวลผลฟังก์ชันในเนื้อหาหลักและส่งผ่านค่ากลับไปยังฟังก์ชันเป็น 'ชนิดส่งคืน' เอาต์พุต

ทุกฟังก์ชันมีชื่อฟังก์ชันซึ่งอธิบายถึงงานที่ฟังก์ชันดำเนินการ ในการใช้ฟังก์ชันคุณ "เรียกใช้" ฟังก์ชันนั้นด้วยชื่อและส่งค่าอินพุต (เรียกว่าอาร์กิวเมนต์) ที่ตรงกับประเภทของพารามิเตอร์ของฟังก์ชัน

ต่อไปนี้เป็นไวยากรณ์ของฟังก์ชันอย่างง่าย

:function_name 
Do_something 
EXIT /B 0
  • function_name คือชื่อที่กำหนดให้กับฟังก์ชันซึ่งควรมีความหมายบางอย่างเพื่อให้ตรงกับสิ่งที่ฟังก์ชันทำจริง

  • คำสั่ง EXIT ใช้เพื่อให้แน่ใจว่าฟังก์ชันออกอย่างถูกต้อง

ต่อไปนี้เป็นตัวอย่างของฟังก์ชันง่ายๆ

ตัวอย่าง

:Display 
SET /A index=2 
echo The value of index is %index% 
EXIT /B 0
ส. เลขที่ ฟังก์ชั่นและคำอธิบาย
1 เรียกใช้ฟังก์ชัน

ฟังก์ชันถูกเรียกใช้ใน Batch Script โดยใช้คำสั่งโทร

2 ฟังก์ชันที่มีพารามิเตอร์

ฟังก์ชันสามารถทำงานกับพารามิเตอร์ได้โดยเพียงแค่ส่งผ่านเมื่อมีการเรียกใช้ฟังก์ชัน

3 ฟังก์ชันที่มีค่าส่งคืน

ฟังก์ชันสามารถทำงานกับค่าที่ส่งคืนได้โดยเพียงแค่ส่งชื่อตัวแปร

4 ตัวแปรท้องถิ่นในฟังก์ชัน

ตัวแปรท้องถิ่นในฟังก์ชันสามารถใช้เพื่อหลีกเลี่ยงความขัดแย้งของชื่อและเก็บการเปลี่ยนแปลงตัวแปรไว้ในฟังก์ชัน

5 ฟังก์ชันแบบเรียกซ้ำ

ความสามารถในการห่อหุ้มเนื้อหาของฟังก์ชันอย่างสมบูรณ์โดยรักษาการเปลี่ยนแปลงตัวแปรภายในของฟังก์ชันและผู้เรียกมองไม่เห็น

6 ไฟล์ I / O

ใน Batch Script เป็นไปได้ที่จะดำเนินการไฟล์ I / O ตามปกติที่คาดหวังในภาษาโปรแกรมใด ๆ

7 การสร้างไฟล์

การสร้างไฟล์ใหม่ทำได้โดยใช้ตัวกรองการเปลี่ยนเส้นทาง> ตัวกรองนี้สามารถใช้เพื่อเปลี่ยนทิศทางเอาต์พุตไปยังไฟล์

8 การเขียนลงไฟล์

การเขียนเนื้อหาไปยังไฟล์ก็ทำได้ด้วยความช่วยเหลือของตัวกรองการเปลี่ยนเส้นทาง> ตัวกรองนี้สามารถใช้เพื่อเปลี่ยนทิศทางเอาต์พุตไปยังไฟล์

9 ต่อท้ายไฟล์

การเขียนเนื้อหาไปยังไฟล์ก็ทำได้โดยใช้ตัวกรองการเปลี่ยนเส้นทางสองครั้ง >> ตัวกรองนี้สามารถใช้เพื่อต่อท้ายผลลัพธ์ใด ๆ ในไฟล์

10 การอ่านจากไฟล์

การอ่านไฟล์ใน batch script ทำได้โดยใช้คำสั่ง FOR loop เพื่ออ่านแต่ละบรรทัดซึ่งกำหนดไว้ในไฟล์ที่ต้องการอ่าน

11 การลบไฟล์

สำหรับการลบไฟล์ Batch Script มีคำสั่ง DEL

12 การเปลี่ยนชื่อไฟล์

สำหรับการเปลี่ยนชื่อไฟล์ Batch Script มีคำสั่ง REN หรือ RENAME

13 การย้ายไฟล์

สำหรับการย้ายไฟล์ Batch Script จะจัดเตรียมคำสั่ง MOVE

14 ไฟล์แบทช์ - ไปป์

ตัวดำเนินการไปป์ (|) รับเอาต์พุต (โดยค่าเริ่มต้นคือ STDOUT) ของคำสั่งหนึ่งคำสั่งและนำไปยังอินพุต (โดยค่าเริ่มต้นคือ STDIN) ของคำสั่งอื่น

15 ไฟล์แบทช์ - อินพุต

เมื่อรันไฟล์แบตช์จะมีตัวเลือกให้คุณส่งผ่านพารามิเตอร์บรรทัดคำสั่งซึ่งสามารถอ่านได้ภายในโปรแกรมเพื่อประมวลผลเพิ่มเติม

16 การใช้ตัวดำเนินการ SHIFT

ข้อ จำกัด ประการหนึ่งของอาร์กิวเมนต์บรรทัดคำสั่งคือสามารถยอมรับอาร์กิวเมนต์ได้จนถึง% 9 เท่านั้น ลองดูตัวอย่างข้อ จำกัด นี้

17 โฟลเดอร์

ใน Batch Script เป็นไปได้ที่จะดำเนินการตามโฟลเดอร์ตามปกติที่คาดหวังในภาษาโปรแกรมใด ๆ

18 การสร้างโฟลเดอร์

การสร้างโฟลเดอร์ทำได้โดยใช้คำสั่ง MD (Make directory)

19 รายการเนื้อหาของโฟลเดอร์

การแสดงรายการเนื้อหาของโฟลเดอร์สามารถทำได้โดยใช้คำสั่ง dir คำสั่งนี้ช่วยให้คุณเห็นไฟล์และไดเร็กทอรีที่มีอยู่ในไดเร็กทอรีปัจจุบัน

20 การลบโฟลเดอร์

สำหรับการลบโฟลเดอร์ Batch Scripting จัดเตรียมคำสั่ง DEL

21 เปลี่ยนชื่อโฟลเดอร์

สำหรับการเปลี่ยนชื่อโฟลเดอร์ Batch Script มีคำสั่ง REN หรือ RENAME

22 การย้ายโฟลเดอร์

สำหรับการย้ายโฟลเดอร์ Batch Script มีคำสั่ง MOVE

ในบทนี้เราจะพูดถึงกระบวนการต่างๆที่เกี่ยวข้องกับ Batch Script

การดูรายการกระบวนการทำงาน

ใน Batch Script คำสั่ง TASKLIST สามารถใช้เพื่อรับรายการของกระบวนการที่กำลังรันอยู่ภายในระบบ

ไวยากรณ์

TASKLIST [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter]
[/FO format] [/NH]
ส. ตัวเลือกและคำอธิบาย
1.

/S system

ระบุระบบรีโมตที่จะเชื่อมต่อ

2.

/U

[domain\]user

ระบุบริบทของผู้ใช้ที่คำสั่งควรดำเนินการ

3.

/P [password]

ระบุรหัสผ่านสำหรับบริบทผู้ใช้ที่กำหนด พร้อมต์สำหรับการป้อนข้อมูลหากละเว้น

4.

/M [module]

แสดงรายการงานทั้งหมดในปัจจุบันโดยใช้ชื่อ exe / dll ที่กำหนด หากไม่ได้ระบุชื่อโมดูลโมดูลที่โหลดทั้งหมดจะแสดงขึ้น

5.

/SVC

แสดงบริการที่โฮสต์ในแต่ละกระบวนการ

6.

/V

แสดงข้อมูลงานแบบละเอียด

7.

/FI filter

แสดงชุดของงานที่ตรงกับเกณฑ์ที่กำหนดโดยตัวกรอง

8.

/FO format

ระบุรูปแบบผลลัพธ์ ค่าที่ถูกต้อง: "TABLE", "LIST", "CSV"

9.

/NH

ระบุว่า "ส่วนหัวของคอลัมน์" ไม่ควรแสดงในเอาต์พุต ใช้ได้กับรูปแบบ "TABLE" และ "CSV" เท่านั้น

ตัวอย่าง

TASKLIST

คำสั่งดังกล่าวจะได้รับรายการของกระบวนการทั้งหมดที่ทำงานบนระบบภายในของคุณ ต่อไปนี้เป็นสแน็ปช็อตของเอาต์พุตที่แสดงผลเมื่อคำสั่งด้านบนถูกรันตามที่เป็นอยู่ ดังที่คุณเห็นจากผลลัพธ์ต่อไปนี้ไม่เพียง แต่คุณจะได้รับกระบวนการต่างๆที่ทำงานบนระบบของคุณคุณยังได้รับการใช้หน่วยความจำของแต่ละกระบวนการอีกด้วย

Image Name                    PID       Session Name       Session#     Mem Usage
========================= ========    ================ =========== ============
System Idle Process             0        Services            0              4 K
System                          4        Services            0            272 K
smss.exe                      344        Services            0          1,040 K
csrss.exe                     528        Services            0          3,892 K
csrss.exe                     612        Console             1         41,788 K
wininit.exe                   620        Services            0          3,528 K
winlogon.exe                  648        Console             1          5,884 K
services.exe                  712        Services            0          6,224 K
lsass.exe                     720        Services            0          9,712 K
svchost.exe                   788        Services            0         10,048 K
svchost.exe                   832        Services            0          7,696 K
dwm.exe                       916        Console             1        117,440 K
nvvsvc.exe                    932        Services            0          6,692 K
nvxdsync.exe                  968        Console             1         16,328 K
nvvsvc.exe                    976        Console             1         12,756 K
svchost.exe                  1012        Services            0         21,648 K
svchost.exe                   236        Services            0         33,864 K
svchost.exe                   480        Services            0         11,152 K
svchost.exe                  1028        Services            0         11,104 K
svchost.exe                  1048        Services            0         16,108 K
wlanext.exe                  1220        Services            0         12,560 K
conhost.exe                  1228        Services            0          2,588 K
svchost.exe                  1276        Services            0         13,888 K
svchost.exe                  1420        Services            0         13,488 K
spoolsv.exe                  1556        Services            0          9,340 K

tasklist > process.txt

คำสั่งดังกล่าวรับเอาต์พุตที่แสดงโดยรายการงานและบันทึกลงในไฟล์ process.txt

tasklist /fi "memusage gt 40000"

คำสั่งดังกล่าวจะดึงเฉพาะกระบวนการที่มีหน่วยความจำมากกว่า 40MB ต่อไปนี้เป็นเอาต์พุตตัวอย่างที่สามารถแสดงผลได้

Image Name                    PID      Session Name     Session#     Mem Usage
=========================   ======== ================ =========== ============
dwm.exe                        916     Console             1        127,912 K
explorer.exe                  2904     Console             1        125,868 K
ServerManager.exe             1836     Console             1         59,796 K
WINWORD.EXE                   2456     Console             1        144,504 K
chrome.exe                    4892     Console             1        123,232 K
chrome.exe                    4976     Console             1         69,412 K
chrome.exe                    1724     Console             1         76,416 K
chrome.exe                    3992     Console             1         56,156 K
chrome.exe                    1168     Console             1        233,628 K
chrome.exe                     816     Console             1         66,808 K

การฆ่ากระบวนการเฉพาะ

อนุญาตให้ผู้ใช้ที่ใช้ Microsoft Windows XP professional, Windows 2003 หรือใหม่กว่าสามารถฆ่างานจากบรรทัดคำสั่งของ Windows โดยใช้รหัสกระบวนการ (PID) หรือชื่อรูปภาพ คำสั่งที่ใช้เพื่อจุดประสงค์นี้คือคำสั่ง TASKILL

ไวยากรณ์

TASKKILL [/S system [/U username [/P [password]]]] { [/FI filter] 
[/PID processid | /IM imagename] } [/T] [/F]
ส. ตัวเลือกและคำอธิบาย
1.

/S system

ระบุระบบรีโมตที่จะเชื่อมต่อ

2.

/U

[domain\]user

ระบุบริบทของผู้ใช้ที่คำสั่งควรดำเนินการ

3.

/P [password]

ระบุรหัสผ่านสำหรับบริบทผู้ใช้ที่กำหนด พร้อมต์สำหรับการป้อนข้อมูลหากละเว้น

4.

/FI

FilterName

ใช้ตัวกรองเพื่อเลือกชุดของงาน อนุญาตให้ใช้ "*" เช่น ชื่อภาพ eq acme * ดูตัวกรองด้านล่างสำหรับข้อมูลเพิ่มเติมและตัวอย่าง

5.

/PID

processID

ระบุ PID ของกระบวนการที่จะยุติ ใช้ TaskList เพื่อรับ PID

6.

/IM

ImageName

ระบุชื่ออิมเมจของกระบวนการที่จะยุติ สัญลักษณ์แทน '*' สามารถใช้เพื่อระบุงานหรือชื่อรูปภาพทั้งหมด

7.

/T

ยุติกระบวนการที่ระบุและกระบวนการย่อยใด ๆ ที่เริ่มต้นโดยมัน

8.

/F

ระบุเพื่อยุติกระบวนการอย่างมีผลบังคับ (es)

ตัวอย่าง

taskkill /f /im notepad.exe

คำสั่งดังกล่าวจะฆ่างาน notepad ที่เปิดอยู่หากเปิดอยู่

taskill /pid 9214

คำสั่งดังกล่าวฆ่ากระบวนการที่มีกระบวนการ 9214

การเริ่มกระบวนการใหม่

การเขียนสคริปต์ DOS ยังมีความพร้อมที่จะเริ่มกระบวนการใหม่ทั้งหมด สิ่งนี้ทำได้โดยใช้คำสั่ง START

ไวยากรณ์

START "title" [/D path] [options] "command" [parameters]

ประเด็น

  • title - ข้อความสำหรับแถบหัวเรื่องของหน้าต่าง CMD (จำเป็น)

  • path - ไดเรกทอรีเริ่มต้น

  • command - คำสั่งไฟล์แบตช์หรือโปรแกรมปฏิบัติการที่จะเรียกใช้

  • parameters - พารามิเตอร์ส่งผ่านไปยังคำสั่ง

ส. ตัวเลือกและคำอธิบาย
1.

/MIN

หน้าต่างเริ่มย่อเล็กสุด

2.

/MAX

หน้าต่างเริ่มขยายใหญ่สุด

3.

/LOW

ใช้คลาสลำดับความสำคัญ IDLE

4.

/NORMAL

ใช้คลาสลำดับความสำคัญปกติ

5.

/ABOVENORMAL

ใช้คลาสลำดับความสำคัญ ABOVENORMAL

6.

/BELOWNORMAL

ใช้คลาสลำดับความสำคัญ BELOWNORMAL

7.

/HIGH

ใช้คลาสที่มีลำดับความสำคัญสูง

8.

/REALTIME

ใช้คลาสลำดับความสำคัญ REALTIME

ตัวอย่าง

START "Test Batch Script" /Min test.bat

คำสั่งดังกล่าวจะเรียกใช้ batch script test.bat ในหน้าต่างใหม่ หน้าต่างจะเริ่มต้นในโหมดย่อเล็กสุดและยังมีชื่อ "Test Batch Script"

START "" "C:\Program Files\Microsoft Office\Winword.exe" "D:\test\TESTA.txt"

คำสั่งดังกล่าวจะเรียกใช้ Microsoft word ในกระบวนการอื่นจากนั้นเปิดไฟล์ TESTA.txt ใน MS Word

นามแฝงหมายถึงการสร้างทางลัดหรือคำสำคัญสำหรับคำสั่งที่มีอยู่ สมมติว่าเราต้องการรันคำสั่งด้านล่างซึ่งไม่มีอะไรนอกจากคำสั่งแสดงรายการไดเร็กทอรีที่มีตัวเลือก / w เพื่อไม่แสดงรายละเอียดที่จำเป็นทั้งหมดในรายการไดเร็กทอรี

Dir /w

สมมติว่าเราจะสร้างทางลัดไปยังคำสั่งนี้ดังนี้

dw = dir /w

เมื่อเราต้องการเรียกใช้ไฟล์ dir /w คำสั่งเราสามารถพิมพ์คำ dw. ตอนนี้คำว่า 'dw' กลายเป็นนามแฝงของคำสั่ง Dir / w

การสร้างนามแฝง

นามแฝงได้รับการจัดการโดยใช้ doskey คำสั่ง

ไวยากรณ์

DOSKEY [options] [macroname=[text]]

ประเด็น

  • macroname - ชื่อย่อของมาโคร

  • text - คำสั่งที่คุณต้องการเรียกคืน

ต่อไปนี้เป็นคำอธิบายของตัวเลือกที่สามารถนำเสนอกับคำสั่ง DOSKEY

ส. ตัวเลือกและคำอธิบาย
1.

/REINSTALL

ติดตั้งสำเนาใหม่ของ Doskey

2.

/LISTSIZE = size

กำหนดขนาดของบัฟเฟอร์ประวัติคำสั่ง

3.

/MACROS

แสดงมาโคร Doskey ทั้งหมด

4.

/MACROS:ALL

แสดงมาโคร Doskey ทั้งหมดสำหรับไฟล์ปฏิบัติการทั้งหมดที่มีมาโคร Doskey

5.

/MACROS:exename

แสดงมาโคร Doskey ทั้งหมดสำหรับปฏิบัติการที่กำหนด

6.

/HISTORY

แสดงคำสั่งทั้งหมดที่เก็บไว้ในหน่วยความจำ

7.

/INSERT

ระบุว่าข้อความใหม่ที่คุณพิมพ์ถูกแทรกในข้อความเก่า

8.

/OVERSTRIKE

ระบุว่าข้อความใหม่เขียนทับข้อความเก่า

9.

/EXENAME = exename

ระบุไฟล์ปฏิบัติการ

10.

/MACROFILE = filename

ระบุไฟล์มาโครที่จะติดตั้ง

11.

macroname

ระบุชื่อสำหรับแมโครที่คุณสร้าง

12.

text

ระบุคำสั่งที่คุณต้องการบันทึก

ตัวอย่าง

สร้างไฟล์ใหม่ชื่อ keys.bat และป้อนคำสั่งต่อไปนี้ในไฟล์ คำสั่งด้านล่างจะสร้างนามแฝงสองนามหนึ่งชื่อสำหรับคำสั่ง cd ซึ่งจะไปที่ไดเร็กทอรีที่เรียกว่า test โดยอัตโนมัติ และอีกอันใช้สำหรับคำสั่ง dir

@echo off
doskey cd = cd/test
doskey d = dir

เมื่อคุณดำเนินการคำสั่งคุณจะสามารถเรียกใช้นามแฝงเหล่านี้ในพรอมต์คำสั่ง

เอาต์พุต

ภาพหน้าจอต่อไปนี้แสดงให้เห็นว่าหลังจากเรียกใช้ไฟล์แบตช์ที่สร้างข้างต้นแล้วคุณสามารถป้อนคำสั่ง 'd' ได้อย่างอิสระและจะให้รายชื่อไดเร็กทอรีซึ่งหมายความว่ามีการสร้างนามแฝงของคุณ

การลบนามแฝง

นามแฝงหรือมาโครสามารถลบได้โดยตั้งค่าของมาโครเป็น NULL

ตัวอย่าง

@echo off
doskey cd = cd/test
doskey d = dir
d=

ในตัวอย่างข้างต้นเราจะตั้งค่ามาโคร d เป็น d = dir ก่อน หลังจากนั้นเราจะตั้งค่าเป็น NULL เนื่องจากเราได้ตั้งค่าของ d เป็น NULL มาโคร d จะถูกลบ

การเปลี่ยนนามแฝง

สามารถแทนที่นามแฝงหรือมาโครได้โดยตั้งค่าของมาโครเป็นค่าใหม่ที่ต้องการ

ตัวอย่าง

@echo off
doskey cd = cd/test
doskey d = dir

d = dir /w

ในตัวอย่างข้างต้นเราจะตั้งค่ามาโคร d เป็น d = dir ก่อน หลังจากนั้นเราจะตั้งค่าเป็น dir / w เนื่องจากเราได้ตั้งค่า d เป็นค่าใหม่นามแฝง 'd' จึงจะรับค่าใหม่

ขณะนี้ Windows มีไลบรารีที่ปรับปรุงแล้วซึ่งสามารถใช้ใน Batch Script สำหรับการทำงานกับอุปกรณ์ที่เชื่อมต่อกับระบบ สิ่งนี้เรียกว่าคอนโซลอุปกรณ์ - DevCon.exe

นักพัฒนาและผู้ทดสอบไดรเวอร์ Windows สามารถใช้ DevCon เพื่อตรวจสอบว่าไดรเวอร์ได้รับการติดตั้งและกำหนดค่าอย่างถูกต้องรวมถึงไฟล์ INF ที่ถูกต้องชุดไดรเวอร์ไฟล์ไดรเวอร์และแพ็คเกจไดรเวอร์ คุณยังสามารถใช้คำสั่ง DevCon (เปิดปิดใช้งานติดตั้งเริ่มต้นหยุดและดำเนินการต่อ) ในสคริปต์เพื่อทดสอบไดรเวอร์DevCon เป็นเครื่องมือบรรทัดคำสั่งที่ทำหน้าที่จัดการอุปกรณ์บนคอมพิวเตอร์เฉพาะที่และคอมพิวเตอร์ระยะไกล

ข้อมูลไดรเวอร์การแสดงผลและอุปกรณ์ DevCon สามารถแสดงคุณสมบัติต่อไปนี้ของไดรเวอร์และอุปกรณ์บนคอมพิวเตอร์ในระบบและคอมพิวเตอร์ระยะไกล (ใช้ Windows XP และรุ่นก่อนหน้า) -

  • รหัสฮาร์ดแวร์รหัสที่เข้ากันได้และรหัสอินสแตนซ์อุปกรณ์ ตัวระบุเหล่านี้อธิบายโดยละเอียดในสตริงการระบุอุปกรณ์

  • คลาสการตั้งค่าอุปกรณ์

  • อุปกรณ์ในคลาสการตั้งค่าอุปกรณ์

  • ไฟล์ INF และไฟล์ไดรเวอร์อุปกรณ์

  • รายละเอียดของแพ็คเกจไดรเวอร์

  • ทรัพยากรฮาร์ดแวร์

  • สถานะอุปกรณ์

  • สแต็คไดรเวอร์ที่คาดไว้

  • แพ็คเกจไดรเวอร์ของ บริษัท อื่นในที่เก็บไดรเวอร์

  • ค้นหาอุปกรณ์ DevCon สามารถค้นหาอุปกรณ์ที่ติดตั้งและถอนการติดตั้งบนคอมพิวเตอร์ในระบบหรือระยะไกลโดยใช้รหัสฮาร์ดแวร์รหัสอินสแตนซ์ของอุปกรณ์หรือคลาสการตั้งค่าอุปกรณ์

  • เปลี่ยนการตั้งค่าอุปกรณ์ DevCon สามารถเปลี่ยนสถานะหรือการกำหนดค่าของอุปกรณ์ Plug and Play (PnP) บนคอมพิวเตอร์ในระบบได้ด้วยวิธีต่อไปนี้ -

    • เปิดใช้งานอุปกรณ์

    • ปิดการใช้งานอุปกรณ์

    • อัปเดตไดรเวอร์ (โต้ตอบและไม่โต้ตอบ)

    • ติดตั้งอุปกรณ์ (สร้าง devnode และติดตั้งซอฟต์แวร์)

    • นำอุปกรณ์ออกจากโครงสร้างอุปกรณ์และลบสแต็กของอุปกรณ์

    • สแกนหาอุปกรณ์ Plug and Play อีกครั้ง

    • เพิ่มลบและจัดลำดับรหัสฮาร์ดแวร์ของอุปกรณ์ที่ระบุรูทใหม่

    • เปลี่ยนไดรเวอร์ตัวกรองบนและล่างสำหรับคลาสการตั้งค่าอุปกรณ์

    • เพิ่มและลบแพ็คเกจไดรเวอร์ของ บริษัท อื่นจากที่เก็บไดรเวอร์

DevCon (DevCon.exe) รวมอยู่ด้วยเมื่อคุณติดตั้ง WDK, Visual Studio และ Windows SDK สำหรับแอปเดสก์ท็อป ชุด DevCon.exe มีอยู่ในตำแหน่งต่อไปนี้เมื่อติดตั้ง

%WindowsSdkDir%\tools\x64\devcon.exe
%WindowsSdkDir%\tools\x86\devcon.exe
%WindowsSdkDir%\tools\arm\devcon.exe

ไวยากรณ์

devcon [/m:\\computer] [/r] command [arguments]

ประเด็น

  • /m:\\computer- รันคำสั่งบนคอมพิวเตอร์ระยะไกลที่ระบุ จำเป็นต้องมีแบ็กสแลช

  • /r- รีบูตตามเงื่อนไข รีบูตระบบหลังจากดำเนินการเสร็จสิ้นเฉพาะเมื่อจำเป็นต้องรีบูตเพื่อให้การเปลี่ยนแปลงมีผล

  • command - ระบุคำสั่ง DevCon

  • ในการแสดงรายการและแสดงข้อมูลเกี่ยวกับอุปกรณ์บนคอมพิวเตอร์ให้ใช้คำสั่งต่อไปนี้ -

    • DevCon HwIDs

    • คลาส DevCon

    • DevCon ListClass

    • ไดร์เวอร์ DevCon

    • DevCon DriverNodes

    • ทรัพยากร DevCon

    • กอง DevCon

    • สถานะ DevCon

    • DevCon Dp_enum

  • ในการค้นหาข้อมูลเกี่ยวกับอุปกรณ์บนคอมพิวเตอร์ให้ใช้คำสั่งต่อไปนี้ -

    • ค้นหา DevCon

    • DevCon FindAll

  • ในการจัดการอุปกรณ์หรือเปลี่ยนการกำหนดค่าให้ใช้คำสั่งต่อไปนี้ -

    • เปิดใช้งาน DevCon

    • ปิดใช้งาน DevCon

    • ปรับปรุง DevCon

    • ปรับปรุง DevConNI

    • ติดตั้ง DevCon

    • DevCon ลบ

    • DevCon Rescan

    • DevCon เริ่มต้นใหม่

    • รีบูต DevCon

    • DevCon SetHwID

    • DevCon ClassFilter

    • DevCon Dp_add

    • DevCon Dp_delete

ตัวอย่าง

ต่อไปนี้เป็นตัวอย่างบางส่วนเกี่ยวกับวิธีใช้คำสั่ง DevCon

List all driver files

คำสั่งต่อไปนี้ใช้การดำเนินการ DevCon DriverFiles เพื่อแสดงรายการชื่อไฟล์ของไดรเวอร์ที่อุปกรณ์บนระบบใช้ คำสั่งใช้อักขระตัวแทน (*) เพื่อระบุอุปกรณ์ทั้งหมดในระบบ เนื่องจากเอาต์พุตมีจำนวนมากคำสั่งจึงใช้อักขระการเปลี่ยนเส้นทาง (>) เพื่อเปลี่ยนทิศทางเอาต์พุตไปยังไฟล์อ้างอิงคือ driverfiles.txt

devcon driverfiles * > driverfiles.txt

คำสั่งต่อไปนี้ใช้การดำเนินการสถานะ DevCon เพื่อค้นหาสถานะของอุปกรณ์ทั้งหมดบนคอมพิวเตอร์ในระบบ จากนั้นจะบันทึกสถานะในไฟล์ status.txt เพื่อบันทึกหรือตรวจสอบในภายหลัง คำสั่งใช้อักขระตัวแทน (*) เพื่อแสดงอุปกรณ์ทั้งหมดและอักขระการเปลี่ยนทิศทาง (>) เพื่อเปลี่ยนทิศทางเอาต์พุตไปยังไฟล์ status.txt

devcon status * > status.txt

คำสั่งต่อไปนี้จะเปิดใช้งานอุปกรณ์เครื่องพิมพ์ทั้งหมดบนคอมพิวเตอร์โดยระบุคลาสการตั้งค่าเครื่องพิมพ์ในคำสั่ง DevCon Enable คำสั่งมีพารามิเตอร์ / r ซึ่งจะรีบูตระบบหากจำเป็นเพื่อให้การเปิดใช้งานมีประสิทธิภาพ

devcon /r enable = Printer

คำสั่งต่อไปนี้ใช้การดำเนินการติดตั้ง DevCon เพื่อติดตั้งอุปกรณ์แป้นพิมพ์บนเครื่องคอมพิวเตอร์ คำสั่งประกอบด้วยเส้นทางแบบเต็มไปยังไฟล์ INF สำหรับอุปกรณ์ (keyboard.inf) และ ID ฮาร์ดแวร์ (* PNP030b)

devcon /r install c:\windows\inf\keyboard.inf *PNP030b

คำสั่งต่อไปนี้จะสแกนคอมพิวเตอร์เพื่อหาอุปกรณ์ใหม่

devcon scan

คำสั่งต่อไปนี้จะสแกนคอมพิวเตอร์ใหม่สำหรับอุปกรณ์ใหม่

devcon rescan

Registry เป็นหนึ่งในองค์ประกอบสำคัญของระบบ windows มีข้อมูลมากมายเกี่ยวกับแง่มุมต่างๆของระบบปฏิบัติการ แอพพลิเคชั่นเกือบทั้งหมดที่ติดตั้งบนระบบ windows โต้ตอบกับรีจิสตรีในรูปแบบใดรูปแบบหนึ่ง

Registry ประกอบด้วยองค์ประกอบพื้นฐานสองอย่าง ได้แก่ คีย์และค่า Registry keys เป็นวัตถุคอนเทนเนอร์ที่คล้ายกับโฟลเดอร์ Registry valuesเป็นวัตถุที่ไม่ใช่คอนเทนเนอร์คล้ายกับไฟล์ คีย์อาจมีค่าหรือคีย์เพิ่มเติม คีย์อ้างอิงด้วยไวยากรณ์ที่คล้ายกับชื่อพา ธ ของ Windows โดยใช้แบ็กสแลชเพื่อระบุระดับของลำดับชั้น

บทนี้จะกล่าวถึงฟังก์ชันต่างๆเช่นการสอบถามค่าการเพิ่มการลบและการแก้ไขค่าจากรีจิสทรี

ส. เลขที่ ประเภทของ Registry & Description
1 อ่านจาก Registry

การอ่านจากรีจิสทรีทำได้โดยใช้คำสั่ง REG QUERY

2 การเพิ่มลงใน Registry

การเพิ่มลงในรีจิสทรีทำได้โดยใช้คำสั่ง REG ADD

3 การลบออกจาก Registry

การลบออกจากรีจิสทรีทำได้โดยใช้คำสั่ง REG DEL

4 การคัดลอก Registry Keys

การคัดลอกจากรีจิสทรีทำได้โดยใช้คำสั่ง REG COPY

5 การเปรียบเทียบ Registry Keys

การเปรียบเทียบรีจิสตรีคีย์ทำได้โดยใช้คำสั่ง REG COMPARE

Batch script มีสิ่งอำนวยความสะดวกในการทำงานกับการตั้งค่าเครือข่าย คำสั่ง NET ใช้เพื่ออัปเดตแก้ไขหรือดูการตั้งค่าเครือข่ายหรือเครือข่าย บทนี้จะกล่าวถึงตัวเลือกต่างๆที่มีให้สำหรับคำสั่ง net

ส. เลขที่ NET คำสั่งและคำอธิบาย
1 บัญชีสุทธิ

View the current password & logon restrictions for the computer.

2 NET CONFIG

Displays your current server or workgroup settings.

3 NET COMPUTER

Adds or removes a computer attached to the windows domain controller.

4 NET USER

This command can be used for the following

View the details of a particular user account.

5 NET STOP/START

This command is used to stop and start a particular service.

6 NET STATISTICS

Display network statistics of the workstation or server.

7 NET USE

Connects or disconnects your computer from a shared resource or displays information about your connections.

Printing can also be controlled from within Batch Script via the NET PRINT command.

Syntax

PRINT [/D:device] [[drive:][path]filename[...]]

Where /D:device - Specifies a print device.

Example

print c:\example.txt /c /d:lpt1

The above command will print the example.txt file to the parallel port lpt1.

Command Line Printer Control

As of Windows 2000, many, but not all, printer settings can be configured from Windows's command line using PRINTUI.DLL and RUNDLL32.EXE

Syntax

RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry [ options ] [ @commandfile ]

Where some of the options available are the following −

  • /dl − Delete local printer.

  • /dn − Delete network printer connection.

  • /dd − Delete printer driver.

  • /e − Display printing preferences.

  • /f[file] − Either inf file or output file.

  • /F[file] − Location of an INF file that the INF file specified with /f may depend on.

  • /ia − Install printer driver using inf file.

  • /id − Install printer driver using add printer driver wizard.

  • /if − Install printer using inf file.

  • /ii − Install printer using add printer wizard with an inf file.

  • /il − Install printer using add printer wizard.

  • /in − Add network printer connection.

  • /ip − Install printer using network printer installation wizard.

  • /k − Print test page to specified printer, cannot be combined with command when installing a printer.

  • /l[path] − Printer driver source path.

  • /m[model] − Printer driver model name.

  • /n[name] − Printer name.

  • /o − Display printer queue view.

  • /p − Display printer properties.

  • /Ss − Store printer settings into a file.

  • /Sr − Restore printer settings from a file.

  • /y − Set printer as the default.

  • /Xg − Get printer settings.

  • /Xs − Set printer settings.

Testing if a Printer Exists

There can be cases wherein you might be connected to a network printer instead of a local printer. In such cases, it is always beneficial to check if a printer exists in the first place before printing.

The existence of a printer can be evaluated with the help of the RUNDLL32.EXE PRINTUI.DLL which is used to control most of the printer settings.

Example

SET PrinterName = Test Printer
SET file=%TEMP%\Prt.txt
RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry /Xg /n "%PrinterName%" /f "%file%" /q

IF EXIST "%file%" (
   ECHO %PrinterName% printer exists
) ELSE (
   ECHO %PrinterName% printer does NOT exists
)

The above command will do the following −

  • It will first set the printer name and set a file name which will hold the settings of the printer.

  • The RUNDLL32.EXE PRINTUI.DLL commands will be used to check if the printer actually exists by sending the configuration settings of the file to the file Prt.txt

Very often than not you can run into problems when running batch files and most often than not you would need to debug your batch files in some way or the other to determine the issue with the batch file itself. Following are some of the techniques that can help in debugging Batch Script files.

Error Messages

To discover the source of the message, follow these steps −

Step 1 − REM out the @ECHO OFF line, i.e. REM @ECHO OFF or :: @ECHO OFF.

Step 2 − Run the batch file with the required command line parameters, redirecting all output to a log file for later comparison.

test.bat > batch.log 2>&1

Step 3 − Search the file batch.log for the error messages

Step 4 − Check the previous line for any unexpected or invalid command, command line switch(es) or value(s); pay special attention to the values of any environment variables used in the command.

Step 5 − Correct the error and repeat this process until all error messages have disappeared.

Complex Command Lines

Another common source of errors are incorrectly redirected commands, like for example "nested" FIND or FINDSTR commands with incorrect search strings, sometimes within a FOR /F loop.

To check the validity of these complex commands, follow these steps −

Step 1 − Insert "command check lines" just before a line which uses the complex command set.

Following is an example wherein the ECHO command is inserted to mark where the output of the first TYPE command ends and the next one starts.

TYPE %Temp%.\apipaorg.reg
ECHO.================================================ TYPE %Temp%.\apipaorg.reg 
| FIND 
"[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TCPIP\Parameters\Interfaces\"

Step 2 − Follow the procedure to find error message sources described above.

Step 3 − Pay special attention to the output of the "simplified" command lines: Is the output of the expected format? Is the "token" value or position as expected?

Subroutines

Subroutines generating error messages pose an extra "challenge" in finding the cause of the error, as they may be called multiple times in the same batch file.

To help find out what causes the incorrect call to the subroutine, follow these steps −

Step 1 − Add and reset a counter variable at the beginning of the script −

SET Counter = 0

Step 2 − Increment the counter each time the subroutine is called, by inserting the following line at the beginning of the subroutine

SET /A Counter+=1

Step 3 − Insert another line right after the counter increment, containing only the SET command; this will list all environment variables and their values.

Step 4 − Follow the procedure to find error message sources described above.

Windows Versions

If you intend to distribute your batch files to other computers that may or may not run the same Windows version, you will need to test your batch files in as many Windows versions as possible.

The following example shows how to check for various operating system versions to check the relevant windows versions.

@ECHO OFF
:: Check for Windows NT 4 and later

IF NOT "%OS%"=="Windows_NT" GOTO DontRun
:: Check for Windows NT 4
VER | FIND "Windows NT" >NUL && GOTO DontRun
:: Check for Windows 2000
VER | FIND "Windows 2000" >NUL && GOTO DontRun
:: Place actual code here . . .
:: End of actual code . . .
EXIT

:DontRun
ECHO Sorry, this batch file was written for Windows XP and later versions only

Logging in is possible in Batch Script by using the redirection command.

Syntax

test.bat > testlog.txt 2> testerrors.txt

Example

Create a file called test.bat and enter the following command in the file.

net statistics /Server

The above command has an error because the option to the net statistics command is given in the wrong way.

Output

If the command with the above test.bat file is run as

test.bat > testlog.txt 2> testerrors.txt

And you open the file testerrors.txt, you will see the following error.

The option /SERVER is unknown.

The syntax of this command is −

NET STATISTICS
[WORKSTATION | SERVER]

More help is available by typing NET HELPMSG 3506.

If you open the file called testlog.txt, it will show you a log of what commands were executed.

C:\tp>net statistics /Server