อัปเดตตัวแปรระบบเป็น cmd การแสดงค่าของตัวแปร ERRORLEVEL บนหน้าจอ ความล่าช้าในไฟล์แบตช์

สภาพแวดล้อมเชลล์ของ Cmd.exe ถูกกำหนดโดยตัวแปรที่ควบคุมลักษณะการทำงานของเชลล์และระบบปฏิบัติการ คุณสามารถกำหนดลักษณะการทำงานของสภาพแวดล้อมเชลล์หรือสภาพแวดล้อมระบบปฏิบัติการทั้งหมดได้โดยใช้ตัวแปรสภาพแวดล้อมสองประเภท: ระบบและภายในเครื่อง ตัวแปรสภาพแวดล้อมของระบบกำหนดพฤติกรรมของสภาพแวดล้อมโกลบอลของระบบปฏิบัติการ ตัวแปรสภาพแวดล้อมภายในเครื่องจะควบคุมลักษณะการทำงานของสภาพแวดล้อมในอินสแตนซ์ที่กำหนดของ Cmd.exe

ตัวแปรสภาพแวดล้อมของระบบถูกกำหนดไว้ล่วงหน้าในระบบปฏิบัติการและพร้อมใช้งานสำหรับกระบวนการ Windows XP ทั้งหมด เฉพาะผู้ใช้ที่มีสิทธิ์ระดับผู้ดูแลระบบเท่านั้นที่สามารถเปลี่ยนตัวแปรเหล่านี้ได้ ตัวแปรเหล่านี้มักใช้ในสคริปต์การเข้าสู่ระบบ

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

ใน รายการถัดไปนำเสนอ หลากหลายชนิดตัวแปรตามลำดับความสำคัญจากมากไปหาน้อย

  1. ตัวแปรระบบในตัว
  2. ตัวแปรระบบไฮฟ์ HKEY_LOCAL_MACHINE
  3. ตัวแปรท้องถิ่นไฮฟ์ HKEY_CURRENT_USER
  4. ตัวแปรสภาพแวดล้อมและเส้นทางทั้งหมดระบุไว้ในไฟล์ Autoexec.bat
  5. ตัวแปรสภาพแวดล้อมและเส้นทางทั้งหมดระบุไว้ในสคริปต์เข้าสู่ระบบ (ถ้ามี)
  6. ตัวแปรที่ใช้โต้ตอบในสคริปต์หรือแบตช์ไฟล์

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

ตารางต่อไปนี้แสดงรายการตัวแปรระบบและสภาพแวดล้อมภายในเครื่องสำหรับ Windows XP

ตัวแปร

คำอธิบาย

%โปรไฟล์ผู้ใช้ทั้งหมด%

ท้องถิ่น

ส่งกลับตำแหน่งของโปรไฟล์ "ผู้ใช้ทั้งหมด"

ท้องถิ่น

ส่งกลับตำแหน่งเริ่มต้นของข้อมูลแอปพลิเคชัน

ท้องถิ่น

ส่งกลับเส้นทางไปยังโฟลเดอร์ปัจจุบัน

ท้องถิ่น

ส่งกลับสตริงคำสั่งที่ใช้ในการเปิดใช้อินสแตนซ์ของ Cmd.exe นี้

ระบบ

ส่งกลับหมายเลขเวอร์ชัน การขยายตัวในปัจจุบันตัวจัดการคำสั่ง

ระบบ

ส่งกลับชื่อคอมพิวเตอร์

ระบบ

ส่งกลับเส้นทางไปยังเชลล์คำสั่งที่กำลังดำเนินการ

ระบบ

ส่งกลับข้อมูลปัจจุบัน ใช้รูปแบบเดียวกับคำสั่ง วันที่/ต- สร้างโดยคำสั่ง Cmd.exe

ระบบ

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

ระบบ

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

ระบบ

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

ระบบ

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

ท้องถิ่น

ส่งกลับชื่อของตัวควบคุมโดเมนที่รับรองความถูกต้องของเซสชันปัจจุบัน

%NUMBER_OF_PROCESSORS%

ระบบ

ระบุจำนวนโปรเซสเซอร์ที่ติดตั้งบนคอมพิวเตอร์

ระบบ

ส่งกลับชื่อระบบปฏิบัติการ เมื่อใช้ Windows 2000 ชื่อระบบปฏิบัติการจะปรากฏเป็น Windows_NT

ระบบ

ระบุพาธการค้นหาสำหรับไฟล์ปฏิบัติการ

ระบบ

ส่งคืนรายการนามสกุลไฟล์ที่ระบบปฏิบัติการพิจารณาว่าสามารถเรียกใช้งานได้

%PROCESSOR_สถาปัตยกรรม%

ระบบ

ส่งคืนสถาปัตยกรรมโปรเซสเซอร์ ค่า: x86, IA64

%PROCESSOR_IDENTFIER%

ระบบ

ส่งกลับคำอธิบายของโปรเซสเซอร์

%PROCESSOR_LEVEL%

ระบบ

ส่งกลับหมายเลขรุ่นของโปรเซสเซอร์ที่ติดตั้งบนคอมพิวเตอร์

%PROCESSOR_REVISION%

ระบบ

ส่งกลับหมายเลขการแก้ไขโปรเซสเซอร์

ท้องถิ่น

ส่งคืนตัวเลือกบรรทัดคำสั่งสำหรับล่ามปัจจุบัน สร้างโดยคำสั่ง Cmd.exe

ระบบ

ส่งกลับเลขทศนิยมที่กำหนดเองตั้งแต่ 0 ถึง 32767 สร้างโดยคำสั่ง Cmd.exe

ระบบ

ส่งกลับชื่อของไดรฟ์ที่มีไดเร็กทอรีรากของ Windows XP (นั่นคือไดเร็กทอรีระบบ)

ระบบ

ส่งกลับตำแหน่งของระบบ ไดเร็กทอรีวินโดวส์ประสบการณ์

ระบบและผู้ใช้

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

ระบบ

ส่งกลับเวลาปัจจุบัน ใช้รูปแบบเดียวกับคำสั่ง เวลา/ที- สร้างโดยคำสั่ง Cmd.exe

ท้องถิ่น

ส่งกลับชื่อของโดเมนที่มีรายการบัญชีผู้ใช้

ท้องถิ่น

ส่งกลับชื่อผู้ใช้ของผู้ใช้ที่เข้าสู่ระบบในปัจจุบัน

ท้องถิ่น

ส่งคืนตำแหน่งโปรไฟล์สำหรับผู้ใช้ปัจจุบัน

ระบบ

ส่งกลับตำแหน่งของไดเร็กทอรีระบบปฏิบัติการ


0.00 (1 )

แนวทางทั่วไป

ไฟล์คำสั่งคือไฟล์ข้อความที่มีนามสกุล ค้างคาวหรือ คำสั่งซึ่งมีบรรทัดแทนคำสั่งหรือชื่อของไฟล์ปฏิบัติการ เมื่อคุณเรียกใช้แบตช์ไฟล์ การควบคุมจะถูกควบคุมโดยตัวประมวลผลคำสั่งของระบบปฏิบัติการ (มักเรียกว่าตัวแปลคำสั่ง) ซึ่งจะอ่านและตีความบรรทัดในแบตช์ไฟล์ตามลำดับ สำหรับ Windows9X จะเป็นอันเสร็จสิ้น คอมมานด์.คอม, สำหรับ WinNT/2K/XP - cmd.exe- บรรทัดไฟล์แบตช์สามารถมีคำสั่งจากตัวประมวลผลคำสั่งเอง (FOR, GOTO, IF ฯลฯ ) หรือชื่อของโมดูลที่ปฏิบัติการได้ (net.exe, regedit.exe, win.com ฯลฯ ) บนระบบปฏิบัติการ WinNT/2K/XP คุณสามารถรับได้ ข้อมูลโดยย่อตามองค์ประกอบของคำสั่งโดยใช้บรรทัดคำสั่ง:

หรือตามคำสั่งเฉพาะ:

ชื่อคำสั่งช่วยเหลือ

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

< - การเปลี่ยนเส้นทางอินพุต

> - การเปลี่ยนเส้นทางเอาต์พุต (หรือ > > - การเปลี่ยนเส้นทางไปที่ ไฟล์ที่มีอยู่เมื่อข้อมูลเอาต์พุตถูกต่อท้ายไฟล์)

เพื่อส่งออกสตรีมข้อมูลคำสั่งช่วยในไฟล์ help.txt บรรทัดคำสั่งจะเป็นดังนี้:

ช่วยเหลือ > help.txt

วิธีแสดงความช่วยเหลือสำหรับคำสั่ง GOTO ในไฟล์ goto.txt:

ช่วยด้วย GOTO > goto.txt

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

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

SET [ตัวแปร=[สตริง]]

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

เส้นสตริงอักขระที่กำหนดให้กับตัวแปรที่ระบุ

ตัวอย่างเช่น บรรทัดคำสั่ง

SET มีนา=วาสยา

จะเพิ่มตัวแปร myname ที่ใช้ค่า Vasya

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

จะแสดงคำว่า เวลา และคำสั่ง

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

และบรรทัดคำสั่ง

SET PATH=C:myprog;%เส้นทาง%

จะเพิ่มเส้นทางการค้นหา โปรแกรมปฏิบัติการอธิบายโดยค่าของตัวแปร PATH ซึ่งเป็นไดเร็กทอรี C:myprog

การดำเนินการคำสั่ง SET โดยไม่มีพารามิเตอร์จะทำให้ค่าปัจจุบันของตัวแปรปรากฏบนหน้าจอในรูปแบบ:

NUMBER_OF_PROCESSORS=1 - จำนวนโปรเซสเซอร์

OS=Windows_NT - ประเภทระบบปฏิบัติการ

Path=E:WINDOWSsystem32;E:WINDOWS;E:Program FilesFar - เส้นทางการค้นหาสำหรับไฟล์ปฏิบัติการ

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH - ส่วนขยายสำหรับไฟล์ปฏิบัติการ

PROCESSOR_ARCHITECTURE=x86 - สถาปัตยกรรมโปรเซสเซอร์

PROCESSOR_IDENTIFIER=x86 ตระกูล 6 รุ่น 8 Stepping 1, AuthenticAMD - ตัวระบุโปรเซสเซอร์

PROCESSOR_LEVEL=6 - ระดับโปรเซสเซอร์ (หมายเลขรุ่น)

PROCESSOR_REVISION=0801 - เวอร์ชันโปรเซสเซอร์

ProgramFiles=E:Program Files - พาธไปยังโฟลเดอร์ "Program Files"

PROMPT=$P$G - รูปแบบพรอมต์บรรทัดคำสั่ง $P - พาธสำหรับ ไดเรกทอรีปัจจุบันเครื่องหมาย $G - ">"

SystemDrive=E: - อักษรระบุไดรฟ์ของระบบ

SystemRoot=E:WINDOWS - ไดเร็กทอรีระบบปฏิบัติการ Windows

ค่าของตัวแปรบางตัวจะไม่ถูกส่งกลับโดยคำสั่ง SET เหล่านี้เป็นตัวแปรที่มีค่าเปลี่ยนแปลงแบบไดนามิก:

%CD% - รับค่าของสตริงไดเร็กทอรีปัจจุบัน

%DATE% - ยอมรับค่า วันที่ปัจจุบัน.

%TIME% - ยอมรับค่าเวลาปัจจุบัน

%RANDOM% - รับค่าสุ่ม เลขทศนิยมในช่วง 1 -32767

%ERRORLEVEL% - ยอมรับค่าปัจจุบันของรหัสทางออกของงาน ERRORLEVEL

%CMDEXTVERSION% - รับค่าของเวอร์ชันตัวประมวลผลคำสั่ง CMD.EXE สำหรับการประมวลผลคำสั่งแบบขยาย

%CMDCMDLINE% - รับค่าของบรรทัดที่เรียกว่าเชลล์

คุณสามารถใช้บรรทัดคำสั่งเพื่อดูค่าของตัวแปร:

ECHO %ตัวแปร%

พารามิเตอร์อินพุตสำหรับไฟล์แบตช์

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

ไฟล์ BAT< параметр1 > , < параметр2 >, ... < параметрN >

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

เอคโค่< текст >

อย่างไรก็ตาม หากแทนที่ข้อความด้วย %1 พารามิเตอร์แรกจะถูกส่งกลับ โดยมี %2 - พารามิเตอร์ตัวที่สอง เป็นต้น

สร้างไฟล์ parm.bat โดยมีเนื้อหาดังต่อไปนี้:

echo พารามิเตอร์แรก=%1

echo พารามิเตอร์ที่สอง =%2

echo พารามิเตอร์ที่สาม = %3

และรันด้วยคำสั่งต่อไปนี้:

parm.bat ครั้งแรกที่สอง “สองคำ”

หลังจากดำเนินการแล้ว คุณจะเข้าใจวิธีการทำงานและพารามิเตอร์ที่มีการเว้นวรรคจะต้องอยู่ในเครื่องหมายคำพูดคู่ เพื่อนำไปแปรรูป โปรเซสเซอร์คำสั่งเส้นไม่ปรากฏบนหน้าจอ คุณสามารถใช้คำสั่งได้ปิดเสียงสะท้อนโดยวางไว้ที่บรรทัดแรกของไฟล์แบตช์ หากต้องการสร้างบรรทัดในแบตช์ไฟล์ที่เชลล์ละเว้น ให้วางไว้ที่จุดเริ่มต้นของบรรทัดอาร์.อี.เอ็ม.< пробел > - วิธีนี้ทำให้คุณสามารถใส่ความคิดเห็น ซึ่งมักจะมีประโยชน์ในไฟล์แบตช์ขนาดใหญ่:

rem ECHO OFF ปิดโหมดการแสดงเนื้อหาของบรรทัดไฟล์คำสั่งบนหน้าจอ

REM จะแสดงเฉพาะผลลัพธ์ของการดำเนินการเท่านั้น

echo พารามิเตอร์แรก=%1

echo พารามิเตอร์ที่สอง =%2

echo พารามิเตอร์ที่สาม = %3

ลองแทนที่ ECHO OFF ด้วย @ECHO OFF - ผลลัพธ์จะพูดเพื่อตัวมันเอง เส้นที่ปิดโหมดเอาท์พุตจะไม่แสดงบนหน้าจออีกต่อไป

การเปลี่ยนภาพและป้ายกำกับ

ในไฟล์แบตช์ คุณสามารถใช้คำสั่งข้ามแบบมีเงื่อนไขซึ่งเปลี่ยนลอจิกของการดำเนินการขึ้นอยู่กับการปฏิบัติตามเงื่อนไขบางประการ เพื่อแสดงให้เห็นการใช้สาขาแบบมีเงื่อนไข เรามาสร้างไฟล์แบตช์ที่มีวัตถุประสงค์เพื่อกำหนดอักษรชื่อไดรฟ์ที่กำหนดไว้ล่วงหน้าให้กับ สื่อที่ถอดออกได้ซึ่งจะใช้เป็นแฟลชไดรฟ์ เงื่อนไขมีดังนี้ - มีแฟลชไดรฟ์ 2 อันโดยอันหนึ่งควรมองเห็นได้ใน Explorer เป็นไดรฟ์ X: และอันที่สอง - เป็นไดรฟ์ Y: ไม่ว่าจะอยู่ที่ใด ช่องเสียบยูเอสบีพวกเขาเชื่อมต่อกัน เราจะถือว่า ล้อจริงสามารถเชื่อมต่อเป็น F: หรือ G: เราจะระบุดิสก์โดยการมีไฟล์ที่มีชื่อที่แน่นอน (ควรซ่อนไฟล์ดังกล่าวในไดเร็กทอรีรากและตั้งชื่อให้เป็นสิ่งที่ผิดปกติ):

Flashd1.let - บนดิสก์แผ่นแรก

Flashd2.let - ในวินาที

เหล่านั้น. วัตถุประสงค์ของแบตช์ไฟล์คือเพื่อตรวจสอบการมีอยู่ของ ดิสก์แบบถอดได้ ฉ:และ กรัม:ไฟล์ Flashd1.letหรือ Flashd2.letและกำหนดอักษรระบุไดรฟ์ ทั้งนี้ขึ้นอยู่กับอันใดที่มีอยู่ เอ็กซ์:หรือ ใช่:

หากต้องการค้นหาไฟล์บนดิสก์ให้ใช้คำสั่งหากมีอยู่:

คำสั่งชื่อไฟล์ IF EXIST

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

รายการ X: C: - สร้าง ดิสก์เสมือน X: เนื้อหาซึ่งจะเป็นไดเร็กทอรีรากของไดรฟ์ C:

สร้างแบตช์ไฟล์ setXY.bat โดยมีบรรทัดต่อไปนี้:

หลังจากเรียกใช้ไฟล์ดังกล่าว คุณจะมีไดรฟ์ X: และ Y: แต่ถ้าคุณเรียกใช้งานไฟล์ดังกล่าวอีกครั้ง คำสั่ง SUBST จะแสดงข้อความแสดงข้อผิดพลาด - ท้ายที่สุดแล้ว ไดรฟ์ X: และ Y: มีอยู่แล้ว

ขอแนะนำให้ข้ามการดำเนินการ SUBST หากดิสก์เสมือน X: และ Y: ถูกสร้างขึ้นแล้ว (หรือลบออกโดยใช้ SUBST พร้อมด้วยตัวเลือก -d ก่อนทำการติดตั้ง) แก้ไขไฟล์แบตช์โดยใช้ไปที่- ถ่ายโอนการควบคุมไปยังบรรทัดของไฟล์แบตช์ตามป้ายกำกับ

ป้ายกำกับ GOTO

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

REM หากไม่มี X - จากนั้นไปที่ป้ายกำกับ SETX

หากไม่มี X: ไปที่ SETX

REM หากมี X: - มาดูการตรวจสอบการมีอยู่ของ Y:

หากมี G:flashd1.let SUBST X: G:

หากมีอยู่ F:flashd1.let SUBST X: F:

REM ถ้า Y: มีอยู่ - กรอกไฟล์แบตช์

หากมี Y: ไปที่ทางออก

หากมีอยู่ G:flashd2.let SUBST Y: G:

หากมีอยู่ F:flashd2.let SUBST Y: F:

REM ออกจากแบตช์ไฟล์

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

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

ECHO โทร 1.bat

เอคโค่กลับมา

และไฟล์ 1.bat ที่มีคำสั่งหยุดชั่วคราว,ระงับการดำเนินการแบตช์ไฟล์จนกว่าจะกดปุ่มใด ๆ

เมื่อรัน test.bat ข้อความจะปรากฏขึ้นบนหน้าจอ

โทร 1.ค้างคาว

และการควบคุมจะมอบให้กับ 1.bat ด้วยคำสั่งหยุดชั่วคราว หลังจากกดปุ่มบนแป้นพิมพ์แล้ว การควบคุมจะถูกส่งไปยังบรรทัดคำสั่ง “ECHO Return” และมันจะแสดงบนหน้าจอ

หากคุณลบ CALL ออกจาก test.bat การส่งคืนจากไฟล์ 1.bat จะไม่ถูกดำเนินการ อย่างไรก็ตาม ด้วยการถ่ายโอนการควบคุมไปยังไฟล์แบตช์ คุณสามารถจัดระเบียบให้เป็นลูปได้ ลองเพิ่มบรรทัดต่อไปนี้ต่อท้ายไฟล์ test.bat:

คุณสามารถแยกออกจากลูปไฟล์แบตช์ได้โดยการกด CTRL-Break คุณสามารถใช้คำสั่ง CALL เพื่อเรียกขั้นตอนภายในแบตช์ไฟล์ได้ ในกรณีนี้ ชื่อจะไม่ถูกใช้เป็นอาร์กิวเมนต์ ไฟล์ภายนอกและป้ายกำกับ:
....
โทร: proc1
....
:proc1
....
ออก
....

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

ไม่มีคำสั่งพิเศษใน Windows ในการสร้างไฟล์ แต่คุณสามารถทำได้โดยไม่ต้องมีหลายวิธี:

การคัดลอกจากคอนโซลไปยังไฟล์

คัดลอกคอน myfile.txt

เมื่อดำเนินการคำสั่งนี้ ข้อมูลจากแป้นพิมพ์ (อุปกรณ์ CON) จะถูกเขียนลงในไฟล์ myfile.txt กด F6 หรือ ชุดค่าผสม CTRL-Zจะทำให้เอาท์พุตเสร็จสมบูรณ์

การเปลี่ยนเส้นทางเอาต์พุต

เสียงสะท้อน 1 > myfile.txt

การรันคำสั่งนี้จะสร้างไฟล์ myfile.txt ที่มีอักขระ “1”

การรวมกันของการเปลี่ยนเส้นทางอินพุตและเอาต์พุต:

คัดลอกคอน > myfile.txt< xyz

เมื่อดำเนินการคำสั่งนี้ เช่นเดียวกับในกรณีแรก จะใช้การคัดลอกจากคอนโซลไปยังไฟล์ แต่แทนที่จะป้อนข้อมูลจากแป้นพิมพ์ จะใช้อินพุตจากอุปกรณ์ xyz ที่ไม่มีอยู่จริง ระบบจะแสดงข้อความแจ้งว่าไม่มีอุปกรณ์ดังกล่าว แต่จะสร้างไฟล์ว่าง myfile.txt ได้สำเร็จ
ตัวเลือกที่ง่ายมากคือการคัดลอกจากอุปกรณ์สมมติที่มีชื่อ ไม่มีเพื่อยื่น
คัดลอก null myfile.txt

หากคุณจำเป็นต้องสร้างไฟล์ว่างบ่อยครั้ง คุณสามารถเตรียมไฟล์แบตช์ของคุณเองได้ (เช่น - newfile.bat หรือที่ดีกว่านั้น - nf.bat) และตั้งชื่อ สร้างไฟล์ส่งผ่านเป็นพารามิเตอร์เมื่อเริ่มต้น

เนื้อหาไฟล์:

วางไฟล์แบตช์นี้ไว้ในไดเร็กทอรีระบบของคุณ (C: windowssystem32 หรืออะไรก็ตามที่อยู่ในพาธการค้นหา PATH ของคุณ)

บรรทัดคำสั่ง:

newfile.bat myfile.txt

หรือ

nf.bat myfile.txt

หรือ
nf myfile.txt

นี่คือทีมของคุณ nfสำหรับการสร้าง ไฟล์เปล่าบนบรรทัดคำสั่ง

การกำหนดอักษรระบุไดรฟ์เดียวกันให้กับไดรฟ์แบบถอดได้

เป้าหมายคือเพื่อให้แน่ใจว่าสามารถเข้าถึงไดรฟ์ USB (แฟลชไดรฟ์) แบบถอดได้โดยใช้ตัวอักษรเดียวกันเสมอ ไม่ว่าจะใช้งานกับคอมพิวเตอร์เครื่องใดและเชื่อมต่อด้วยวิธีใด เพื่อแก้ปัญหานี้ เราจะใช้คำสั่ง SUBST ที่กล่าวไปแล้วข้างต้น ให้เราเลือกตัวอักษรที่ต้องการสำหรับดิสก์แบบถอดได้ เช่น - X ชื่อของดิสก์ที่ใช้เปิดแบตช์ไฟล์จะมีให้ใช้งานเป็นตัวแปร %~d0 สร้างแบตช์ไฟล์ที่มีเนื้อหาดังต่อไปนี้:
@ปิดเสียงสะท้อน
ส่วนย่อย X: %~d0
การสร้างดิสก์เสมือน X: ซึ่งเกี่ยวข้องกับอะไร ฟิสิคัลดิสก์จากตำแหน่งที่เรียกใช้ไฟล์แบตช์
สามารถรับข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับค่าการทดแทนสำหรับตัวแปร %0 ได้จากไฟล์แบตช์ต่อไปนี้:

@ปิดเสียงสะท้อน
การประมวลผลไฟล์เสียงสะท้อน - %0
ECHO วันที่/เวลาที่ไฟล์แบตช์ถูกสร้าง/แก้ไข - %~t0
เส้นทางไฟล์ ECHO แบตช์ - "%~f0"
ดิสก์ไฟล์คำสั่ง ECHO - %~d0
ไดเรกทอรีไฟล์ ECHO Batch - "%~p0"
ชื่อไฟล์แบตช์ ECHO - %~n0
นามสกุลไฟล์ ECHO แบตช์ - %~x0
เอคโค่ ชื่อสั้นและส่วนขยาย - %~s0
แอ็ตทริบิวต์ไฟล์แบตช์ ECHO - %~a0
ขนาดไฟล์แบตช์ ECHO - %~z0

การสร้างเอกสารสำคัญหลายรุ่นตามวันที่และเวลา

มาแก้ไขปัญหาต่อไปนี้ - เราจำเป็นต้องสร้างไฟล์เก็บถาวรที่อยู่ในไดเร็กทอรี C:Program FilesFAR ชื่อ ไฟล์เก็บถาวรควรประกอบด้วยเวลาปัจจุบัน (hour. minutes.seconds - HH.MM.SS.rar) และควรวางไว้ใน แค็ตตาล็อกใหม่โดยชื่อจะต้องประกอบด้วยวันที่ปัจจุบัน (วัน.เดือน.ปี - วว.ดด.ปปป) สำหรับการเก็บถาวรเราจะใช้ RAR archiver รูปแบบการเปิดตัวสำหรับการสร้างไฟล์เก็บถาวร:

RAR เอ-อาร์< путь и имя архива > < Путь и имя архивируемых данных >

- คำสั่งสร้างไฟล์เก็บถาวร
-ร- คีย์ที่กำหนดการเก็บถาวรไดเร็กทอรีย่อย (ตั้งแต่ใน โฟลเดอร์ต้นฉบับมีไดเรกทอรีย่อย)

ดังนั้น ในการแก้ปัญหา คุณต้องสร้างชื่อและเส้นทางสำหรับ RAR อย่างถูกต้อง สำหรับสิ่งนี้เราจะใช้ปัจจัยต่อไปนี้:

  • ในไฟล์แบตช์คุณสามารถเข้าถึงวันที่และเวลาปัจจุบัน - ตัวแปร %DATE% และ %TIME%
  • ในแบตช์ไฟล์ คุณสามารถสร้างตัวแปรชั่วคราวได้โดยใช้คำสั่ง SET
  • ค่าของตัวแปรชั่วคราวสามารถสร้างขึ้นตาม %DATE% และ %TIME% โดยการข้ามและ/หรือเปลี่ยนชิ้นส่วนโดยใช้คำสั่ง SET เดียวกัน

    วันที่ที่ได้รับจากตัวแปร %DATE% เมื่อ การตั้งค่ามาตรฐานการตั้งค่าภูมิภาคมีลักษณะดังนี้:
    จันทร์ที่ 21/01/2548- วันในสัปดาห์ (2 ตัวอักษร) - ช่องว่าง - วันที่ (10 ตัวอักษร)
    ตัวอย่างเช่น เรามาสร้างไดเร็กทอรีด้วยคำสั่ง MD< имя каталога >.
    เราสร้างตัวแปรชั่วคราว VDATE ในหน่วยความจำและกำหนดค่าของตัวแปรสภาพแวดล้อม DATE โดยไม่มีอักขระ 3 ตัวแรก - 01/20/2548:

    ตั้ง VDATE=%วันที่:~3%

    สร้างไดเร็กทอรีบนไดรฟ์ C: ซึ่งมีชื่อ = วันที่ปัจจุบันจากตัวแปร VDATE:

    MD C:\%VDATE%
    หลังจากดำเนินการคำสั่งนี้ ไดเร็กทอรีชื่อ 01/20/2005 จะถูกสร้างขึ้นบนไดรฟ์ C:

    เวลาที่ได้รับจากตัวแปร %TIME%:
    14:30:59.93 - ชั่วโมง นาที วินาที หนึ่งในร้อยวินาที
    หลายร้อยอาจไม่จำเป็นในชื่อไฟล์เก็บถาวร สร้างตัวแปรชั่วคราว VTIME และกำหนดเวลาปัจจุบันโดยไม่มีอักขระ 3 ตัวสุดท้าย
    ตั้งค่า VTIME=%เวลา:~0,-3%
    ตอนนี้ VTIME = 14:30:59 แต่ไม่สามารถใช้เครื่องหมาย /// ในชื่อไฟล์ได้ ดังนั้นให้แทนที่ด้วยจุด
    ตั้งค่า VTIME=%VTIME::=.%
    ตัวแปร VTIME จะใช้ค่า 14.30.59 สำหรับชื่อไฟล์ที่จะทำ

    มาเปิดตัว Archiver กัน:

    ตอนนี้คุณสามารถสร้างแบตช์ไฟล์ที่มีเนื้อหา:

    ตั้ง VDATE=%วันที่:~3%
    เอ็มดี c:\%VDATE%
    ตั้งค่า VTIME=%เวลา:~0,-3%
    ตั้งค่า VTIME=%VTIME::=.%
    rar a -r C:\%VDATE%\%VTIME%.rar "C:ไฟล์โปรแกรมไกล*.*"

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

    การสร้างไฟล์เก็บถาวรโดยใช้ตัวแปรโปรไฟล์ผู้ใช้

    ไฟล์แบตช์นี้สร้างการเก็บถาวรเนื้อหาของโฟลเดอร์ "My Documents" ของผู้ใช้ Win2K/XP โดยวางไว้ในไดเร็กทอรี
    C:ARHIVเอกสารของฉันชื่อผู้ใช้DateTime

    มีการใช้ตัวแปร USERPROFILE, USERNAME, WINDIR ดังนั้นไฟล์แบตช์นี้จะไม่ทำงานใน WIN9X (แม้ว่าหากต้องการคุณสามารถแทรกคำสั่งลงใน autoexec.bat เพื่อตั้งค่าของตัวแปรเหล่านี้และใช้ในเวอร์ชันผู้ใช้คนเดียวโดยแทบไม่มีการเปลี่ยนแปลงเลย) เนื้อหาของไฟล์แบตช์ได้รับการแสดงความคิดเห็นและไม่ควรทำให้เกิดปัญหามากนักหากคุณเข้าใจตัวอย่างก่อนหน้านี้:

    @ปิดเสียงสะท้อน
    rem ตั้งค่าตัวแปร FROM - ตำแหน่งที่จะรับข้อมูลสำหรับการเก็บถาวร
    ตั้งค่าจาก=%USERPROFILE%เอกสารของฉัน
    rem ตั้งค่าตัวแปรเป็น - ตำแหน่งที่จะวางไฟล์เก็บถาวร
    ตั้งเป็น=C:arhivMyเอกสาร\%ชื่อผู้ใช้%
    rem มาสร้างไดเร็กทอรีการบำรุงรักษากันดีกว่า
    เอ็มดี "%ถึง%"
    rem มาสร้างชื่อของไดเร็กทอรีย่อยจากวันที่ปัจจุบัน
    rem วันที่ปัจจุบันพร้อมการตั้งค่าเริ่มต้นสำหรับ Win2K - จันทร์ 04/25/2548
    rem วันที่ปัจจุบัน พร้อมการตั้งค่าเริ่มต้นสำหรับ WinXP - 04/25/2005
    rem จากวันที่ปัจจุบันเราจะสร้างชื่อของไดเรกทอรีย่อย - 04/25
    rem โดยค่าเริ่มต้น Windir สำหรับ WinXP คือ C:WINDOWS และสำหรับ Win2K - C:WINNT
    ถ้า /I %Windir% == C:WINNT ไปที่ Win2K
    ตั้ง vdate=%DATE:~0.-5%
    ไปที่ SetFileName
    :Win2K
    ตั้ง vdate=%DATE:~3.-5%
    rem มาสร้างชื่อไฟล์เก็บถาวรตั้งแต่เวลาปัจจุบัน - 12:00:00.99 น
    rem เราจะทิ้งหนึ่งในร้อยของวินาทีและแทนที่สัญลักษณ์: ด้วยสัญลักษณ์ ผลการแข่งขัน - 12.00.00 น
    :SetFileName
    ตั้งค่า vtime=%TIME:~0,-3%
    ตั้งค่า vtime=%vtime::=.%
    rem สร้างไดเรกทอรีย่อยสำหรับไฟล์เก็บถาวร
    md "%TO%\%VDATE%"
    rem คำสั่งสำหรับการเก็บถาวร จำเป็นต้องใช้สวิตช์ -r สำหรับการเก็บถาวรด้วยโฟลเดอร์ย่อย
    ตัวเลือก rem สำหรับผู้จัดเก็บ ARJ: arj a -r "%TO%\%VDATE%\%VTIME%.arj" "%FROM%*.*"
    rem เมื่อใช้ โปรแกรมเก็บถาวร RAR:
    rar -r "%TO%\%VDATE%\%VTIME%.rar" "%FROM%*.*"

    ดำเนินการคำสั่งตามกำหนดเวลา

    ใน WIN2K/XP จะมียูทิลิตีบรรทัดคำสั่งที่,ช่วยให้คุณสามารถรันคำสั่งหรือแบตช์ไฟล์ได้ เวลาที่กำหนดบนคอมพิวเตอร์ท้องถิ่นหรือระยะไกล หากต้องการใช้คำสั่ง AT จะต้องเรียกใช้บริการ Task Scheduler (โดยปกติจะเริ่มต้นตามค่าเริ่มต้นระหว่างการติดตั้งระบบ)

    AT [\ชื่อคอมพิวเตอร์] [ [รหัส] | /ลบ ]

    ณ เวลา [\ชื่อคอมพิวเตอร์]

    [ /ทุก:วัน[,...] | /NEXT:day[,...]] "คำสั่ง"

    \ชื่อคอมพิวเตอร์ชื่อของคอมพิวเตอร์ระยะไกล หากละเว้นพารามิเตอร์นี้

    ใช้คอมพิวเตอร์ท้องถิ่น

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

    /ลบยกเลิกงานที่กำหนดเวลาไว้ หากละเว้นรหัสงาน

    ยกเลิกงานทั้งหมดที่กำหนดไว้ตามที่ระบุ

    คอมพิวเตอร์.

    /ใช่ยกเลิกคำขอยืนยันเมื่อยกเลิกทั้งหมด

    งานที่วางแผนไว้

    เวลาถึงเวลาที่จะเริ่มคำสั่ง

    /เชิงโต้ตอบอนุญาตให้มีปฏิสัมพันธ์กับผู้ใช้

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

    /ทุกวัน[,...]งานจะเริ่มในวันที่ระบุของสัปดาห์หรือ

    เดือน. หากละเว้นวันที่ ระบบจะใช้วันที่ปัจจุบัน

    /ถัดไป:วัน[,...]งานจะทำงานในวันที่ระบุถัดไปของสัปดาห์

    (เช่นวันพฤหัสบดีหน้า) หากละเว้นวันที่

    ใช้วันที่ปัจจุบันของเดือน

    "ทีม"ชื่อไฟล์คำสั่งหรือแบตช์

    ตัวอย่างการใช้:

    อะนาล็อกของ "นาฬิกาปลุก" - หน้าต่างป๊อปอัปพร้อมข้อความเตือนกระแสหรือ ไปยังผู้ใช้ที่ระบุเกี่ยวกับความจำเป็นในการดำเนินการบางอย่าง เพื่อส่งข้อความถึงผู้ใช้ที่เราใช้ยูทิลิตี้นี้NET.EXE

    เวลา 13:50 น. net.exe ส่ง * เวลาสำหรับกาแฟ

    เวลา 17:50 น. net.exe ส่ง User Time เพื่อกลับบ้าน

    ที่ \SERVER 13:45 net.exe ส่ง คุณต้องรีสตาร์ทเซิร์ฟเวอร์

    ดูรายการงานที่กำหนดเวลาไว้:

    การลบงานที่กำหนดเวลาไว้แล้ว:

    ที่ 3 /ลบ- การลบงานหมายเลข 3

    AT /ลบ /ใช่- การลบงานทั้งหมด

    “แผงควบคุม” - “งานที่กำหนดเวลาไว้” ช่วยให้คุณสามารถดู เปลี่ยนแปลง และลบงานที่สร้างโดยทีมได้ ที่งาน

    การหยุดและการเริ่มต้นบริการระบบ

    หากต้องการหยุดและเริ่มบริการ Win2K/XP จากบรรทัดคำสั่ง ให้ใช้คำสั่ง NET.EXE

    NET.EXE หยุด< имя службы >

    NET.EXE เริ่มต้น< имя службы >

    คุณสามารถใช้ทั้งชื่อสั้นและชื่อเต็มได้ ("Dnscache" - สั้น, "ไคลเอ็นต์ DNS" - ชื่อเต็มบริการ) ชื่อบริการที่มีการเว้นวรรคจะอยู่ในเครื่องหมายคำพูดคู่ ตัวอย่างการรีสตาร์ทบริการ “DNS Client”

    หยุดสุทธิ "ไคลเอนต์ DNS"

    เริ่มต้นสุทธิ "ไคลเอ็นต์ DNS"

    เช่นเดียวกันโดยใช้ชื่อสั้น:

    หยุดสุทธิ Dnscache

    Dnscache เริ่มต้นสุทธิ

    สามารถคัดลอกชื่อเต็มของบริการได้จาก “บริการ” -< Имя службы >- “คุณสมบัติ” - “ชื่อที่แสดง”

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

    ในการทำงานกับบริการของระบบใน Windows XP คุณสามารถใช้ยูทิลิตีนี้ได้ sc.exeซึ่งช่วยให้คุณไม่เพียงหยุด/เริ่มบริการเท่านั้น แต่ยังสำรวจสถานะ พารามิเตอร์การเริ่มต้นและการทำงาน เปลี่ยนการกำหนดค่า และยังใช้งานได้ไม่เพียงกับบริการของระบบเท่านั้น แต่ยังรวมถึงไดรเวอร์ด้วย หากคุณมีสิทธิ์ คุณสามารถจัดการบริการได้ไม่เพียงแต่บนเครื่องภายในเครื่องเท่านั้น แต่ยังรวมถึงเครื่องระยะไกลด้วย ตัวอย่าง:
    sc.exe หยุด DNSCache- หยุดบริการ DNSCache บนเครื่องคอมพิวเตอร์
    sc\192.168.0.1 สอบถาม DNSCache- สำรวจสถานะของบริการ DNSCache บนคอมพิวเตอร์ที่มีที่อยู่ IP 192.168.0.1
    sc\COMP เริ่ม DNSCacheเริ่มบริการ DNSCache บนคอมพิวเตอร์ COMP
    คุณสามารถรับความช่วยเหลือในการทำงานกับยูทิลิตี้นี้ได้โดยการป้อน:
    สค/?

    การแสดงค่าของตัวแปร ERRORLEVEL

    ไฟล์แบตช์แบบง่ายนี้จะแสดงค่าของตัวแปร ERRORLEVEL บนบรรทัดคำสั่งเฉพาะ ขั้นแรกจะตรวจสอบการมีอยู่ของพารามิเตอร์อินพุตอย่างน้อยหนึ่งรายการ และหากไม่มีการระบุไว้ จะมีข้อความแสดงข้อผิดพลาดปรากฏขึ้นและทางออกจะเกิดขึ้น หากมีการระบุพารามิเตอร์อย่างน้อยหนึ่งรายการ พารามิเตอร์อินพุตจะได้รับการพิจารณา บรรทัดคำสั่งและถูกดำเนินการ และค่า ERRORLEVEL จะถูกส่งกลับโดยใช้คำสั่ง ECHO เนื้อหาของไฟล์ (ฉันเรียกมันว่า echoEL.bat):

    @ปิดเสียงสะท้อน
    ถ้า "%1" NEQ "" GOTO PARMOK
    ECHO คุณต้องตั้งค่าบรรทัดคำสั่งเพื่อกำหนด ERRORLEVEL
    ออก
    :ปาร์ม็อก
    %1 %2 %3 %4 %5 %6 %7 %8
    เสียงสะท้อน %1 %2 %3 %4 %5 %6 %7 %8 ระดับข้อผิดพลาด=%ระดับข้อผิดพลาด%

    เปิดตัวตัวอย่าง:
    echoEL.bat แบ่งปันสุทธิ
    - คำสั่ง NET SHARE จะถูกดำเนินการ (ให้รายการทรัพยากรเครือข่ายที่ใช้ร่วมกัน) และรหัส ERRORLEVEL จะถูกออก
    echoEL.bat NET แบ่งปัน X"="C:
    - คำสั่ง NET SHARE X:=C: จะถูกดำเนินการ (สร้างไฟล์ที่แชร์ ทรัพยากรเครือข่ายด้วยชื่อ X และเส้นทางไปยังไดเร็กทอรีรากของไดรฟ์ C :) โปรดทราบว่าสัญลักษณ์ = อยู่ในเครื่องหมายคำพูดคู่
    ตัวเลือกที่ระบุไว้ข้างต้นจะตั้งค่าบรรทัดคำสั่งที่ถูกต้อง แต่ลองตั้งค่าพารามิเตอร์ที่ไม่ถูกต้องเป็น NET.EXE หรือคำสั่งที่ไม่มีอยู่จริงแล้วคุณจะเห็นว่า ERRORLEVEL จะใช้ค่าใด และโปรดทราบว่าบรรทัดคำสั่งทำงานได้จริง และตัวอย่าง ตัวเลือก “echoEL.bat รูปแบบ A:” จะเริ่มฟอร์แมตฟล็อปปี้ดิสก์ในไดรฟ์ A:

    บทสนทนากับผู้ใช้

    หากต้องการโต้ตอบกับผู้ใช้ คุณสามารถใช้คำสั่ง:
    SET /พี< имя переменной >=< текст >
    เมื่อดำเนินการแล้ว หน้าจอจะแสดงขึ้นมา ข้อความ < текст >และคาดหวังข้อความตอบกลับ ตัวอย่าง - ขอรหัสผ่านและกำหนดค่าให้กับตัวแปร "pset":

    ตั้ง /p pset="ใส่รหัสผ่าน - "
    รหัสผ่าน echo คือ - %pset%

    ข้อเสีย วิธีนี้คือความเป็นไปไม่ได้ที่จะดำเนินการต่อไปของไฟล์คำสั่งในกรณีที่ไม่มีการตอบกลับของผู้ใช้ ดังนั้นจึงมักใช้แทนการตั้งค่า โปรแกรมของบุคคลที่สาม- หนึ่งในนั้น - CHOICE.COMดาวน์โหลด (1.7kb)
    CHOICE ส่งข้อความตัวอักษรให้ผู้ใช้และรอให้ผู้ใช้เลือกหนึ่งในตัวเลือกการตอบกลับที่กำหนด (การกดปุ่มบนแป้นพิมพ์) ขึ้นอยู่กับผลการเลือก ตัวแปร ERRORLEVEL จะถูกสร้างขึ้น โดยค่าจะเท่ากับเลขลำดับของการเลือก ตามค่าเริ่มต้น มีสองตัวเลือก - Y หรือ N หากคำตอบคือ Y - ERRORLEVEL=1 ถ้า N - ERRORLEVEL=2 คุณสามารถใช้ตัวเลือกการเลือกได้มากกว่า 2 ตัวเลือก และสามารถตั้งค่าการเลือกเริ่มต้นได้เมื่อผู้ใช้อยู่ที่ เวลาที่แน่นอนฉันไม่ได้กดปุ่มเดียว รูปแบบบรรทัดคำสั่ง:

    ทางเลือก ตัวเลือก] c,nn]
    /C[:]choices - กำหนดตัวเลือกที่ถูกต้อง หากไม่ได้ระบุ - YN
    /N - ไม่แสดงตัวเลือกการเลือก
    /S - ตัวพิมพ์เล็กและ ตัวพิมพ์ใหญ่แตกต่าง.
    /T[:]c,nn - การเลือกเริ่มต้นคือ "c" หลังจาก "nn" วินาที
    ข้อความ - เอาต์พุตสตริงข้อความตามคำขอ

    มาสร้างแบตช์ไฟล์ที่สาธิตการใช้ CHOICE กันดีกว่า จะตอบสนองต่อการกดปุ่ม "1", "2", 3" และ "0" เมื่อกด "0" ก็เสร็จสิ้น และเมื่อกดที่เหลือจะมีข้อความส่งถึงผู้ใช้ หากไม่มีสิ่งใด กดภายใน 10 วินาทีก็เสร็จสิ้น

    @ปิดเสียงสะท้อน
    :ทางเลือก
    ทางเลือก /C:1230 /T:0.10 ตัวเลือกของคุณ
    หาก % ERRORLEVEL% เท่ากับ 4 GOTO ออก
    สะท้อนตัวเลือกของคุณ=%ERRORLEVEL%
    ไปที่ตัวเลือก
    :ออก

    ตอนนี้ เมื่อใช้ CHOICE คุณสามารถสร้างไฟล์แบตช์ได้ ซึ่งผู้ใช้สามารถกำหนดตรรกะได้

    ความล่าช้าในไฟล์แบตช์

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

    : SLEEP N - โดยที่ N คือจำนวนวินาทีที่จะดีเลย์

    หากไม่มีชุดทรัพยากร คุณสามารถใช้คำสั่ง CHOISE ที่กล่าวถึงก่อนหน้านี้โดยไม่ต้องมีเอาต์พุตข้อความและสร้างการตอบสนองอัตโนมัติใน nn วินาที (1-99):

    Choice.com /T:y,10 /N - ดีเลย์ 10 วินาที

    วิธีการที่เป็นสากลมากขึ้นจะขึ้นอยู่กับการส่ง Ping ไปยังอินเทอร์เฟซแบบย้อนกลับด้วยจำนวนแพ็กเก็ตที่ต้องการ การ Ping สำหรับอินเทอร์เฟซย้อนกลับ (ชื่อโฮสต์ - localhost หรือที่อยู่ IP 127.0.0.1) ดำเนินการโดยไม่มีการส่งข้อมูลจริง เช่น แทบจะในทันที และช่วงเวลาระหว่างการส่ง Ping คือ 1 วินาที ด้วยการระบุจำนวนการ Ping โดยใช้สวิตช์ "-n" คุณสามารถได้รับความล่าช้า n วินาที:

    Ping 127.0.0.1 -n 30 > nul - จะให้ความล่าช้า 30 วินาที

    ค้นหาคอมพิวเตอร์ที่ใช้งานแอปพลิเคชัน

    หากต้องการใช้สคริปต์นี้ ให้ใช้ยูทิลิตีจากแพ็กเกจ PSTools(คำอธิบายสั้น). มาสร้างแบตช์ไฟล์ที่ค้นหาเครือข่ายท้องถิ่นสำหรับคอมพิวเตอร์ที่กำลังรันโปรแกรม โดยชื่อ (ส่วนเริ่มต้นของชื่อ) จะถูกระบุเป็นพารามิเตอร์เมื่อเริ่มต้น เช่น เกม . หากตรวจพบ ข้อความจะถูกส่งไปยังคอมพิวเตอร์ ADMINCOMP และแอปพลิเคชันที่ตรวจพบจะถูกบังคับให้ยุติ ในการค้นหาเราจะใช้ยูทิลิตี้ Pslist.exe และวิเคราะห์โค้ดส่งคืน ค่าของตัวแปร ERRORLEVEL เท่ากับศูนย์หมายความว่ายูทิลิตี้ตรวจพบกระบวนการบนคอมพิวเตอร์ระยะไกลที่ตรงกับเงื่อนไขการค้นหา เราจะตั้งชื่อกระบวนการเพื่อค้นหาเป็นพารามิเตอร์เมื่อเรียกใช้ไฟล์แบตช์ มาตั้งชื่อไฟล์แบตช์ของเรากัน ปล.ค้างคาว- การรันด้วยพารามิเตอร์จะมีลักษณะดังนี้:
    เกม psl.bat
    ขั้นแรกเราต้องตรวจสอบว่ามีการระบุพารามิเตอร์ในบรรทัดคำสั่งเมื่อเริ่มต้นหรือไม่ และหากไม่ได้ระบุ เราจะส่งข้อความถึงผู้ใช้และดำเนินการให้เสร็จสิ้น หากระบุพารามิเตอร์แล้ว ให้ไปที่ป้ายกำกับ "PARMOK":
    @ปิดเสียงสะท้อน
    ถ้า "%1" NEQ "" GOTO PARMOK
    ECHO คุณต้องระบุชื่อกระบวนการเพื่อค้นหา
    ออก
    :ปาร์ม็อก
    ตอนนี้เราต้องตรวจสอบให้แน่ใจว่ามีการสร้างที่อยู่ IP ของคอมพิวเตอร์ที่สอดคล้องกันสำหรับบรรทัดคำสั่ง PSlist วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการกำหนดตัวแปรสภาพแวดล้อมชั่วคราว (ใช้ได้เฉพาะในช่วงระยะเวลาของการดำเนินการไฟล์คำสั่ง) ให้กับค่าของส่วนประกอบคงที่ของที่อยู่ (เช่น 192.168.0.) และค่าที่คำนวณได้ของ ชิ้นส่วนที่มีการสั่งซื้อต่ำ (เช่น ในช่วง 1-254) ตัวอย่างเช่น เราจะถือว่าเราต้องสแกนคอมพิวเตอร์ในช่วงที่อยู่:
    192.168.0.1 - 192.168.0.30:
    ตั้งค่า IPTMP=192.168.0. - ส่วนอาวุโสของที่อยู่
    set /A IPLAST=1 - ส่วนต่ำ สวิตช์ /A หมายถึงนิพจน์ตัวเลขจากการคำนวณ
    ตั้งค่า IPFULL=%IPTMP%%IPLAST% - ค่า ที่อยู่ IP แบบเต็ม.
    บรรทัดคำสั่งสำหรับ PSlist จะมีลักษณะดังนี้:
    pslist\%IPFULL%%1
    ตอนนี้สิ่งที่เหลืออยู่คือการรัน PSlist แบบวนรอบ โดยเพิ่มหนึ่งรายการไปยังส่วนที่เรียงลำดับต่ำของที่อยู่ในแต่ละรอบจนกระทั่งค่าถึง 30 และวิเคราะห์ค่า ERRORLEVEL หลังจากดำเนินการ เพื่อวิเคราะห์ผลลัพธ์ เราจะทำการเปลี่ยนแปลงด้วยคำสั่ง:
    ไปที่%ข้อผิดพลาด%%
    ให้การเปลี่ยนไปใช้ป้ายกำกับ REZULT0 เมื่อตรวจพบกระบวนการและเป็น REZULT1
    25-08-2013 14:35:35: บทความ: ความปลอดภัยของข้อมูล: ซอฟต์แวร์ คุณชอบมันไหม?
  • ในบทความนี้:

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

    การกำหนดตัวแปร

    ชุด<Имяпеременной>=<Значениепеременной>

    คำสั่ง SET เป็นส่วนขยายของความสามารถของระบบปฏิบัติการในการจัดการพารามิเตอร์ โดยระบุตัวแปรที่มีค่าจะถูกแทนที่สำหรับชื่อเมื่อใดก็ตามที่มีการใช้ชื่อนั้นระหว่างเครื่องหมายเปอร์เซ็นต์ ดังนั้นหากตั้งค่าไว้ (ตัวแปรที่หลายๆ เกมใช้ การ์ดเสียงคอมพิวเตอร์):

    ชุดบลาสเตอร์=A220 I5 D1 P330

    เมื่อใช้โครงสร้างต่อไปนี้ในแบตช์ไฟล์:

    เสียงสะท้อน %บลาสเตอร์%

    "A220 I5 D1 P330" จะแสดงบนหน้าจอ ตัวแปรที่กำหนดโดยใช้คำสั่ง SET จะถูกเรียก ตัวแปรสภาพแวดล้อมและสามารถมองเห็นได้หลังจากดำเนินการจนกว่า DOS จะรีสตาร์ท (เว้นแต่จะเปลี่ยนด้วยตนเองในหน่วยความจำ) นั่นคือสามารถใช้งานได้จากไฟล์แบตช์หรือโปรแกรมหนึ่งหลังจากถูกระบุในอีกไฟล์หนึ่ง ตัวแปรที่มีชื่อเสียงที่สุดคือตัวแปร PATH ซึ่งเป็นชุดเส้นทางสำหรับการค้นหาไฟล์อย่างรวดเร็ว มันถูกตั้งค่าไว้ในไฟล์ autoexec.bat

    ตัวแปรบรรทัดคำสั่ง
    (พารามิเตอร์สำหรับการเรียกไฟล์ค้างคาว)

    %<цифра 0-9>

    เช่นเดียวกับในภาษาใด ๆ ในภาษา ไฟล์แบตช์คุณสามารถใช้ตัวแปรที่ได้รับเป็นพารามิเตอร์ในไฟล์ค้างคาวได้

    สามารถมีตัวแปรอิสระที่มีอยู่พร้อมกันได้ทั้งหมด 10 ตัว สำหรับการเขียน โปรแกรมที่ซับซ้อนนี่ค่อนข้างเล็กแม้ว่า 3-4 ก็มักจะเพียงพอสำหรับงานปกติ ค่าของตัวแปรเท่ากับค่าของพารามิเตอร์ที่เกี่ยวข้องจากบรรทัดคำสั่ง ตัวแปร %0 จะมีชื่อของไฟล์ .bat และเส้นทางไปยังไฟล์ หากคุณระบุไว้ นั่นคือหากคุณรันไฟล์ abc.bat ด้วยพารามิเตอร์ต่อไปนี้:

    abc.bat และ bc def

    จากนั้นตัวแปร %0 จะมีค่า abc.bat , %1 จะมีค่า a , %2 จะมี bc และ %3 จะมี def คุณสมบัตินี้ใช้กันอย่างแพร่หลายในการสร้างไฟล์แบตช์อเนกประสงค์เมื่อต้องรับมือกับการดำเนินการซ้ำๆ

    หากต้องการรับตัวแปรมากกว่า 10 รายการจากบรรทัดคำสั่ง คุณสามารถใช้คำสั่ง SHIFT

    คำสั่ง SHIFT อนุญาตให้คุณใช้พารามิเตอร์บรรทัดคำสั่งมากกว่า 10 รายการ อย่างไรก็ตาม พารามิเตอร์ก่อนหน้าที่เกี่ยวข้องจะสูญหายไป กล่าวอีกนัยหนึ่งคำสั่ง SHIFT จะเลื่อนค่าตัวแปรทั้งหมดไปทางซ้ายหนึ่งขั้น นั่นคือ ตัวแปร %0 จะประกอบด้วยค่าที่มีอยู่ในตัวแปร %1 ก่อนหน้านี้ และตัวแปร %1 จะมีค่าของตัวแปร %2 ก่อนการเปลี่ยนแปลง อย่างไรก็ตาม, การดำเนินการนี้ไม่สามารถย้อนกลับได้ กล่าวคือ ไม่สามารถเปลี่ยนตัวแปรกลับได้

    ถ้าตัวดำเนินการแบบมีเงื่อนไข

    โชคดี, ล่ามคำสั่ง cmd.exe ใน Windows 2000 สมัยใหม่และใหม่กว่ารองรับบล็อกคำสั่งในโครงสร้างการแยกสาขา ทำให้ไม่จำเป็นต้องใช้ IF กับป้ายกำกับ บล็อกคำสั่งจะอยู่ในวงเล็บ ดูเหมือนว่านี้ (เลียนแบบสไตล์การเยื้อง C/C++):

    ถ้าเงื่อนไข (

    คำสั่ง Rem ของสาขา 'จากนั้น'

    เรม...

    ) อื่น (

    คำสั่ง Rem ของสาขา 'else'

    เรม...

    ตัวอย่างที่เฉพาะเจาะจงใช้:

    @ปิดเสียงสะท้อน

    ตั้งค่า BUILDMODE=%1

    ถ้า "%BUILDMODE%" == "" (

    Echo FAIL: ต้องมีอาร์กิวเมนต์ ^(--debug, --release^)

    ออก /ข 1

    rem ลบยัติภังค์ทั้งหมดออกจากอาร์กิวเมนต์เพื่อทำให้การประมวลผลง่ายขึ้น

    ตั้งค่า BUILDMODE=%BUILDMODE:-=%

    ถ้า "%BUILDMODE%" == "debug" (

    ตั้งค่า CCFLAGS=/Od /MDd /Z7

    ) อื่น (

    ตั้งค่า CCFLAGS=/O2 /MD

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

    ถ้า "%BUILDMODE%" == "debug" (

    Echo INFO: การตั้งค่าโหมดสภาพแวดล้อมการดีบัก

    ตั้งค่า OPTFLAGS=/Od

    ตั้งค่า CCFLAGS=%OPTFLAGS% /MDd /Z7

    ) อื่น (

    Echo INFO: การตั้งค่าโหมดการปล่อยสภาพแวดล้อม

    ตั้งค่า OPTFLAGS=/O2

    ตั้งค่า CCFLAGS=%OPTFLAGS% /MD

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

    ปัญหานี้แก้ไขได้โดยใช้การขยายตัวแปรแบบหน่วงเวลา ตัวแปรที่มีอยู่ใน !…! แทนที่จะเป็น %...% ความหมายจะถูกเปิดเผยเฉพาะในขณะที่ใช้งานโดยตรงเท่านั้น โหมดนี้ปิดใช้งานโดยค่าเริ่มต้น คุณสามารถเปิดใช้งานได้โดยใช้สวิตช์ /V:ON เมื่อเรียก cmd.exe หรือโดยใช้คำสั่ง:

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

    ด้วยเหตุนี้ ตัวอย่างที่ "ผิด" ก่อนหน้านี้สามารถแก้ไขได้ดังนี้:

    setlocal ที่เปิดใช้งานelayedexpansion

    ถ้า "%BUILDMODE%" == "debug" (

    Echo INFO: การตั้งค่าสภาพแวดล้อมโหมดแก้ไขข้อบกพร่อง

    ตั้งค่า OPTFLAGS=/Od

    ตั้งค่า CCFLAGS=!OPTFLAGS! /MDd /Z7

    ) อื่น (

    Echo INFO: การตั้งค่าสภาพแวดล้อมโหมดรีลีส

    ตั้งค่า OPTFLAGS=/O2

    ตั้งค่า CCFLAGS=!OPTFLAGS! /นพ

    ตอนนี้เกือบจะเป็นบล็อกแบบ if-then-else เต็มรูปแบบแล้ว เกือบแล้ว เพราะหากคุณพบวงเล็บปิดในคำสั่ง echo คำสั่งใดคำสั่งหนึ่ง คุณจะต้องหลีกเลี่ยงคำสั่งนั้นด้วยอักขระ ^ มิฉะนั้น parser จะสับสน...

    แต่ไม่ว่าในกรณีใด นี่ยังดีกว่าจำนวนแท็กและการเปลี่ยนภาพที่บ้าคลั่งมาก

    ฟังก์ชั่น

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

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

    โทร: อาร์กิวเมนต์ป้ายกำกับ

    ฟังก์ชั่นส่งคืนด้วยคำสั่ง:

    exit /b [รหัสส่งคืนทางเลือก]

    ที่นี่คีย์ /b มีความสำคัญมาก: หากไม่มีมัน คุณจะออกจากฟังก์ชันไม่ได้ แต่จะออกจากสคริปต์โดยทั่วไป

    สำหรับรายละเอียด ให้พิมพ์ที่บรรทัดคำสั่ง:

    เรียก/?

    ออก /?

    สิ่งที่น่าสนใจคือคำสั่ง call ที่มีไวยากรณ์นี้รองรับ โทรซ้ำกับ การสร้างอัตโนมัติเฟรมใหม่สำหรับอาร์กิวเมนต์ตัวแปร %0-%9 บางครั้งสิ่งนี้อาจมีประโยชน์ นี่คือตัวอย่างคลาสสิกของการคำนวณแฟคทอเรียลแบบเรียกซ้ำในภาษาคำสั่ง:

    @ปิดเสียงสะท้อน

    โทร:แฟกทอเรียล %1

    เสียงสะท้อน %ผลลัพธ์%

    ออก

    rem ฟังก์ชันคำนวณค่าแฟกทอเรียล

    เข้าสู่ระบบ:

    rem %1 จำนวนที่คุณต้องการคำนวณแฟกทอเรียล

    รีมเอาท์พุต:

    rem %ผลลัพธ์% ค่าแฟกทอเรียล

    :แฟกทอเรียล

    ถ้า %1 == 0 (

    ตั้งค่าผลลัพธ์=1

    ออก /ข

    ถ้า %1 == 1 (

    ตั้งค่าผลลัพธ์=1

    ออก /ข

    ตั้งค่า /a พารามิเตอร์=%1 - 1

    โทร:แฟกทอเรียล %PARAM%

    ตั้งค่า /a ผลลัพธ์=%1 * %ผลลัพธ์%

    ออก /ข

    ตัวอย่างงาน:

    > แฟกทอเรียล.bat 10

    3628800

    การใช้ค่าส่งคืน
    (กำลังประมวลผลรหัสทางออกของโปรแกรม)

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

    ไฟล์แบตช์จะค้นหารหัสทางออกของโปรแกรมที่รันได้อย่างไร? ตัวแปรคีย์ ERRORLEVEL มีไว้เพื่อจุดประสงค์นี้

    ตัวอย่างไฟล์แบตช์ที่มีระดับข้อผิดพลาด:

    @ปิดเสียงสะท้อน

    REM รันโปรแกรม prg1.exe

    PRG1.EXE

    การวิเคราะห์รหัสความสมบูรณ์ REM

    หากระดับข้อผิดพลาด 2 ไปที่ไฟล์ไม่พบ

    หากระดับข้อผิดพลาด 1 ไปที่ผู้เขียน

    หากระดับข้อผิดพลาด 0 ไปที่ EXITOK

    ไปที่ ONEXIT

    :ไม่พบไฟล์

    ข้อผิดพลาดเอคโค่! ไม่พบไฟล์!

    ไปที่ ONEXIT

    :นักเขียน

    เกิดข้อผิดพลาดในการบันทึก ECHO!

    ไปที่ ONEXIT

    :ออกซิทอค

    ECHO โปรแกรมเสร็จสมบูรณ์เรียบร้อยแล้ว

    ไปที่ ONEXIT

    :ONEXIT

    โปรดทราบว่าการวิเคราะห์รหัสทางออกไม่ได้เริ่มต้นจากศูนย์ แต่จากค่าสูงสุดที่เป็นไปได้ ความจริงก็คือการตรวจสอบดังกล่าวหมายถึง: “ถ้าระดับข้อผิดพลาดมากกว่าหรือเท่ากับค่าแล้ว...” นั่นคือถ้าเราตรวจสอบโดยเริ่มจากศูนย์ ค่าใดๆ ก็ตามในบรรทัดแรกจะเป็นจริงซึ่งไม่ถูกต้อง

    นี่เป็นข้อผิดพลาดที่พบบ่อยที่สุดในโปรแกรมประเภทนี้

    ตัวแปรตั้งค่าสภาพแวดล้อม Cmd.exe พวกเขาไม่เพียงกำหนดพฤติกรรมของเชลล์คำสั่งเท่านั้น แต่ยังกำหนดระบบปฏิบัติการด้วย ตัวแปรควรแบ่งออกเป็นสองประเภท ซึ่งแต่ละประเภทมีคุณสมบัติเฉพาะตัว: ระบบและภายในเครื่อง ประเภทแรกช่วยให้คุณสามารถกำหนดลักษณะการทำงานของสภาพแวดล้อมระบบปฏิบัติการทั่วโลกระหว่างการทำงานได้ ตัวแปรท้องถิ่นตั้งค่ากิจกรรมของสภาพแวดล้อมเฉพาะกับอินสแตนซ์เฉพาะของ Cmd.exe สิ่งนี้จะต้องถูกบันทึกไว้ว่าเป็นข้อแตกต่างที่สำคัญ

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

    ด้านล่างนี้เป็นรายการคลาสตัวแปรที่มีอยู่ตามความสำคัญของลำดับความสำคัญ (ตามลำดับจากมากไปน้อย):

    • ระบบในตัว พวกเขาจะต้องเรียกว่าร้ายแรงที่สุดซึ่งมีให้ ความสนใจเป็นพิเศษกำลังดำเนินการ.
    • ตัวแปรมุมมองระบบที่เกี่ยวข้องกับ HKEY_LOCAL_MACHINE
    • ตัวแปร ประเภทท้องถิ่นที่เกี่ยวข้องกับ HKEY_CURRENT_USER
    • รายการเต็มตัวแปรและสภาพแวดล้อมที่พบในเอกสาร Autoexec.bat
    • รายการตัวแปรและสภาพแวดล้อมทั้งหมดที่พบในสคริปต์เริ่มต้นระบบ ในบางสถานการณ์อาจไม่มีอยู่จริง
    • ตัวแปรที่ใช้เชิงโต้ตอบสำหรับสคริปต์ที่เป็นลายลักษณ์อักษรหรือเอกสารชุด

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

    ตัวแปรท้องถิ่น

    ชื่อ ข้อมูล

    %โปรไฟล์ผู้ใช้ทั้งหมด%

    ให้ข้อมูลว่าโปรไฟล์ผู้ใช้ทั้งหมดอยู่ที่ใด

    ระบุตำแหน่งเริ่มต้นของโปรแกรม

    ช่วยให้คุณได้รับเส้นทางไปยังโฟลเดอร์ที่คุณใช้

    จัดเตรียมบรรทัดคำสั่งที่ใช้ในการเรียกใช้อินสแตนซ์ปัจจุบันของ Cmd.exe

    ระบุชื่อของตัวควบคุมโดเมนที่กำลังตรวจสอบเซสชันที่ระบุ

    ช่วยให้คุณสามารถระบุพารามิเตอร์ KA สำหรับล่ามปัจจุบัน หากต้องการเข้าถึง คุณต้องใช้ Cmd.exe

    ระบุชื่อของโดเมนที่มีรายการบัญชีผู้ใช้

    ระบุชื่อผู้ใช้ที่เข้าสู่ระบบ

    ส่งกลับตำแหน่งบัญชีสำหรับผู้ใช้ปัจจุบัน

    ตัวแปรของระบบ

    อนุญาตให้คุณระบุหมายเลขเวอร์ชันของส่วนขยายตัวประมวลผลคำสั่งปัจจุบัน

    ระบุชื่ออุปกรณ์ที่กำลังดำเนินการอยู่

    ส่งคืนพาธไปยังเชลล์คำสั่งที่ปฏิบัติการได้

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

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

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

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

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

    %NUMBER_OF_PROCESSORS%

    กำหนดจำนวนโปรเซสเซอร์ที่อุปกรณ์เฉพาะมี

    ส่งข้อมูลว่า OS มีชื่ออะไร อุปกรณ์เฉพาะ- มีคุณสมบัติบางอย่างในการแสดงชื่อของระบบปฏิบัติการบางประเภทและจะต้องนำมาพิจารณาด้วย

    กำหนดเส้นทางการค้นหาสำหรับการตรวจจับโปรแกรม

    แสดงรายการส่วนขยายเอกสารที่ระบบปฏิบัติการพิจารณาว่าสามารถเรียกใช้งานได้

    %PROCESSOR_สถาปัตยกรรม%

    ใช้ในกรณีที่จำเป็นต้องได้รับสถาปัตยกรรมของโปรเซสเซอร์เฉพาะ

    %PROCESSOR_IDENTFIER%

    จัดเตรียมให้ ข้อมูลสั้น ๆเกี่ยวกับโปรเซสเซอร์

    %PROCESSOR_LEVEL%

    ให้ข้อมูลเกี่ยวกับหมายเลขการแก้ไขโปรเซสเซอร์

    ระบุจำนวนเต็มใดๆ ในช่วง 0-32767 รวม

    ระบุชื่อของดิสก์ที่บันทึกไดเร็กทอรีรากของ Windows XP

    จัดให้มีสถานที่ ไดเร็กทอรีระบบระบบปฏิบัติการ

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

    ให้ข้อมูลเกี่ยวกับเวลาปัจจุบัน ใช้รูปแบบการแสดงผลที่คล้ายกันกับ time /t

    ช่วยให้คุณส่งคืนไดเร็กทอรี OS

    การตั้งค่าตัวแปรสภาพแวดล้อม

    คุณต้องใช้เพื่อสร้าง ลบ หรือเปิดเผยตัวแปรสภาพแวดล้อม ทีมพิเศษชุด. คุณลักษณะที่โดดเด่นคือการปรับตัวแปรเฉพาะในสภาพแวดล้อมของเชลล์ปฏิบัติการ

    หากต้องการออกตัวแปรเฉพาะ ให้เขียนใน CS:

    ตั้งค่าตัวแปร_ชื่อ

    การเพิ่มตัวแปรอื่นทำได้โดยการเขียน:

    ตั้งค่าชื่อตัวแปร=ค่า

    ในการดำเนินการขั้นตอนการลบ คุณควรเขียนบรรทัด:

    ตั้งค่าตัวแปร_ชื่อ=

    ระบบระบุการใช้สัญลักษณ์ที่มีอยู่ส่วนใหญ่เพื่อใช้เป็นค่า Prodels สามารถรวมไว้ได้ที่นี่ เพื่อนำไปใช้ อักขระบางตัวคุณต้องป้อน (^) หรือใส่เครื่องหมายคำพูดล้อมรอบก่อน การไม่ทำเช่นนั้นอาจส่งผลให้เกิดการดำเนินการที่ไม่ถูกต้องหรือข้อผิดพลาด จำเป็นต้องพิจารณาหลายประการ ตัวอย่างง่ายๆ- สมมติว่าเราจำเป็นต้องสร้างตัวแปร&ชื่อใหม่ เพื่อให้งานสำเร็จ จะมีการป้อนสิ่งต่อไปนี้ลงใน CS:

    ตั้ง varname=new^&name

    คุณสามารถพยายามไม่ใช้อักขระพิเศษ (^) ได้ แต่จะเป็นไปไม่ได้ เหตุผลก็คือมันยังคงให้ข้อผิดพลาดเดิมอยู่

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

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

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

    %ตัวแปร_ชื่อ%

    มีจุดมุ่งหมายเพื่อระบุข้อเท็จจริงที่ว่า Cmd.exe ต้องเข้าถึงค่าของตัวแปรเฉพาะโดยตรง ขั้นตอนการเปรียบเทียบอักขระต่ออักขระจะไม่ได้รับการดำเนินการ สิ่งสำคัญคือต้องพิจารณาข้อเท็จจริงที่ว่าการทดแทนนั้นไม่ถือเป็นการเรียกซ้ำ การตรวจสอบจะดำเนินการเพียงครั้งเดียว

    02/12/58 21.1K

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

    บรรทัดคำสั่งคืออะไร

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

    ในระบบเปิดอยู่ ใช้ระบบปฏิบัติการยูนิกซ์เมื่อทำงานกับบรรทัดคำสั่งคุณสามารถใช้เมาส์ได้

    คำสั่งบางคำสั่งมาถึงเราจาก MS-DOS บรรทัดคำสั่งเรียกอีกอย่างว่าคอนโซล มันถูกใช้ไม่เพียงแต่สำหรับการจัดการระบบปฏิบัติการ แต่ยังสำหรับการจัดการอีกด้วย โปรแกรมปกติ- โดยส่วนใหญ่ คำสั่งที่ไม่ค่อยได้ใช้บ่อยที่สุดจะรวมอยู่ในชุดคำสั่งนี้

    ข้อได้เปรียบ แอปพลิเคชัน cmdคำสั่งพื้นฐานคือใช้ทรัพยากรระบบในปริมาณขั้นต่ำ และนี่เป็นสิ่งสำคัญในกรณีฉุกเฉินเมื่อพลังทั้งหมดของคอมพิวเตอร์เกี่ยวข้องไม่ทางใดก็ทางหนึ่ง

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

    ทีม เปลือกหน้าต่างในการจัดการและเปลี่ยนเส้นทางคำสั่งไปยังยูทิลิตี้และเครื่องมือระบบปฏิบัติการบางอย่าง จะใช้ล่าม Cmd.exe โดยจะโหลดคอนโซลและเปลี่ยนเส้นทางคำสั่งในรูปแบบที่ระบบเข้าใจ

    การทำงานกับบรรทัดคำสั่งในระบบปฏิบัติการ Windows

    คุณสามารถเรียกคอนโซลใน Windows ได้หลายวิธี:


    ทั้งสองวิธีเกี่ยวข้องกับการเรียกใช้คอนโซลในฐานะผู้ใช้ปัจจุบัน นั่นคือด้วยสิทธิ์และข้อจำกัดทั้งหมดที่กำหนดให้กับบทบาทในระบบปฏิบัติการ หากต้องการเรียกใช้ cmd ด้วยสิทธิ์ของผู้ดูแลระบบคุณต้องเลือกไอคอนโปรแกรมในเมนู Start และใน เมนูบริบทเลือกรายการที่เหมาะสม:


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

    คำสั่งพื้นฐานสำหรับการทำงานกับไฟล์และไดเร็กทอรี

    คำสั่งที่ใช้บ่อยที่สุดคือ:

    • RENAME – เปลี่ยนชื่อไดเร็กทอรีและไฟล์ ไวยากรณ์คำสั่ง:

    เปลี่ยนชื่อ | REN [ไดรฟ์/พาธ] ชื่อไฟล์/ไดเร็กทอรีต้นฉบับ | ชื่อไฟล์สุดท้าย
    ตัวอย่าง: เปลี่ยนชื่อ C: UsershomeDesktoptost.txt test.txt

    • DEL (ERASE) – ใช้เพื่อลบไฟล์เท่านั้น ไม่ใช่ไดเร็กทอรี ไวยากรณ์ของมันคือ:

    เดล | ลบ [วิธีการประมวลผล] [ชื่อไฟล์]
    ตัวอย่าง: เดล C:UsershomeDesktoptest.txt/P

    โดยวิธีการประมวลผล เราหมายถึงแฟล็กพิเศษที่ช่วยให้คุณสามารถใช้เงื่อนไขบางอย่างเมื่อลบไฟล์ ในตัวอย่างของเรา ธง "P" ช่วยให้สามารถแสดงกล่องโต้ตอบการอนุญาตสำหรับการลบแต่ละไฟล์:


    ข้อมูลเพิ่มเติมเกี่ยวกับค่าที่เป็นไปได้ของพารามิเตอร์ "วิธีการประมวลผล" สามารถพบได้ในเอกสารทางเทคนิคสำหรับระบบปฏิบัติการ Windows

    • MD – ให้คุณสร้างโฟลเดอร์ตามเส้นทางที่ระบุ ไวยากรณ์:

    MD [ไดรฟ์:] [เส้นทาง]
    ตัวอย่าง:
    MD C: UsershomeDesktoptest1test2

    ตัวอย่างจะสร้างโฟลเดอร์ย่อย test2 ภายในโฟลเดอร์ test1 หากไม่มีโฟลเดอร์รากของเส้นทางโฟลเดอร์ใดโฟลเดอร์หนึ่ง โฟลเดอร์นั้นจะถูกสร้างขึ้นด้วย:

    • ถ. ( RMDIR) – การลบโฟลเดอร์เฉพาะหรือไดเร็กทอรีทั้งหมดในเส้นทางที่ระบุ ไวยากรณ์:

    ถ. | RMDIR [process_key] [ไดรฟ์/เส้นทาง]
    ตัวอย่าง:
    rmdir /s C:UsershomeDesktoptest1test2

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

    ในส่วนถัดไป เราจะมาดูคำสั่งเครือข่าย cmd อย่างละเอียดยิ่งขึ้น

    คำสั่งสำหรับการทำงานกับเครือข่าย

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

    • ping – คำสั่งใช้เพื่อตรวจสอบความสามารถ การเชื่อมต่อเครือข่ายพีซี ส่งไปยังคอมพิวเตอร์ระยะไกล กำหนดปริมาณแพ็กเก็ตแล้วส่งกลับไปให้พวกเขา โดยคำนึงถึงเวลาในการส่งแพ็กเก็ตและเปอร์เซ็นต์ของการสูญเสียด้วย ไวยากรณ์:

    ping [-t] [-a] [-n ตัวนับ] [-l ขนาด] [-f] [-i TTL] [-v ประเภท] [-r ตัวนับ] [-s ตัวนับ] [(-j host_list | - k node_list)] [-w ช่วงเวลา] [target_PC_name]

    ตัวอย่างการใช้งานคำสั่ง:
    ปิง example.microsoft.com
    ปิง -w 10,000 192.168.239.132

    ในตัวอย่างสุดท้ายของคำสั่ง cmd ping คำขอจะถูกส่งไปยังผู้รับพร้อมที่อยู่ IP ที่ระบุ ช่วงเวลารอระหว่างแพ็กเก็ตคือ 10,000 (10 วินาที) โดยค่าเริ่มต้น พารามิเตอร์นี้ถูกตั้งค่าเป็น 4000:

    • Tracet – ใช้เพื่อกำหนด เส้นทางเครือข่ายถึง ทรัพยากรที่ระบุโดยการส่งข้อความเสียงสะท้อนพิเศษผ่านโปรโตคอล
    • ICMP (โปรโตคอลข้อความควบคุม) หลังจากรันคำสั่งพร้อมพารามิเตอร์แล้ว รายการเราเตอร์ทั้งหมดที่ข้อความผ่านจะปรากฏขึ้น องค์ประกอบแรกในรายการคือเราเตอร์ตัวแรกที่ด้านข้างของทรัพยากรที่ร้องขอ

    ไวยากรณ์ของคำสั่ง Tracer cmd:
    Tracet [-d] [-h maximum_hop_number] [-j node_list] [-w ช่วงเวลา] [target_resource_name]
    ตัวอย่างการใช้งาน:
    Tracert -d -h 10 microsoft.com

    ตัวอย่างติดตามเส้นทางไปยังทรัพยากรที่ระบุ สิ่งนี้จะเพิ่มความเร็วของการดำเนินการเนื่องจากการใช้พารามิเตอร์ d ซึ่งป้องกันไม่ให้คำสั่งพยายามขอรับสิทธิ์ในการอ่านที่อยู่ IP จำนวนการเปลี่ยนภาพ (การกระโดด) จำกัดการใช้อยู่ที่ 10 ครั้ง ตั้งค่าพารามิเตอร์ซ ตามค่าเริ่มต้น จำนวนการกระโดดคือ 30:


    ปิดเครื่อง [(-l|-s|-r|-a)] [-f] [-m [\PC_name]] [-t xx] [-c “ข้อความ”] [-d[u][p]: xx:ปปป]
    ตัวอย่าง:
    ปิดเครื่อง /s /t 60 /f /l /m \191.162.1.53

    พีซีระยะไกล (m) ที่มีที่อยู่ IP ที่ระบุ (191.162.1.53) จะปิดตัวลงหลังจาก 60 วินาที (t) สิ่งนี้จะบังคับให้คุณออกจากระบบแอปพลิเคชันทั้งหมด (f) และเซสชันของผู้ใช้ปัจจุบัน (l)