สภาพแวดล้อมเชลล์ของ Cmd.exe ถูกกำหนดโดยตัวแปรที่ควบคุมลักษณะการทำงานของเชลล์และระบบปฏิบัติการ คุณสามารถกำหนดลักษณะการทำงานของสภาพแวดล้อมเชลล์หรือสภาพแวดล้อมระบบปฏิบัติการทั้งหมดได้โดยใช้ตัวแปรสภาพแวดล้อมสองประเภท: ระบบและภายในเครื่อง ตัวแปรสภาพแวดล้อมของระบบกำหนดพฤติกรรมของสภาพแวดล้อมโกลบอลของระบบปฏิบัติการ ตัวแปรสภาพแวดล้อมภายในเครื่องจะควบคุมลักษณะการทำงานของสภาพแวดล้อมในอินสแตนซ์ที่กำหนดของ Cmd.exe
ตัวแปรสภาพแวดล้อมของระบบถูกกำหนดไว้ล่วงหน้าในระบบปฏิบัติการและพร้อมใช้งานสำหรับกระบวนการ Windows XP ทั้งหมด เฉพาะผู้ใช้ที่มีสิทธิ์ระดับผู้ดูแลระบบเท่านั้นที่สามารถเปลี่ยนตัวแปรเหล่านี้ได้ ตัวแปรเหล่านี้มักใช้ในสคริปต์การเข้าสู่ระบบ
ตัวแปรสภาพแวดล้อมภายในเครื่องจะพร้อมใช้งานเฉพาะเมื่อผู้ใช้ที่ตนสร้างขึ้นเข้าสู่ระบบแล้วเท่านั้น ตัวแปรท้องถิ่นจากรัง HKEY_CURRENT_USERใช้ได้สำหรับผู้ใช้ปัจจุบันเท่านั้น แต่กำหนดลักษณะการทำงานของสภาพแวดล้อมระบบปฏิบัติการทั่วโลก
ใน รายการถัดไปนำเสนอ หลากหลายชนิดตัวแปรตามลำดับความสำคัญจากมากไปหาน้อย
- ตัวแปรระบบในตัว
- ตัวแปรระบบไฮฟ์ HKEY_LOCAL_MACHINE
- ตัวแปรท้องถิ่นไฮฟ์ HKEY_CURRENT_USER
- ตัวแปรสภาพแวดล้อมและเส้นทางทั้งหมดระบุไว้ในไฟล์ Autoexec.bat
- ตัวแปรสภาพแวดล้อมและเส้นทางทั้งหมดระบุไว้ในสคริปต์เข้าสู่ระบบ (ถ้ามี)
- ตัวแปรที่ใช้โต้ตอบในสคริปต์หรือแบตช์ไฟล์
ใน เชลล์คำสั่งแต่ละอินสแตนซ์ของ 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% เมื่อ การตั้งค่ามาตรฐานการตั้งค่าภูมิภาคมีลักษณะดังนี้: ตั้ง VDATE=%วันที่:~3% สร้างไดเร็กทอรีบนไดรฟ์ C: ซึ่งมีชื่อ = วันที่ปัจจุบันจากตัวแปร VDATE: MD C:\%VDATE% เวลาที่ได้รับจากตัวแปร %TIME%: มาเปิดตัว Archiver กัน: ตอนนี้คุณสามารถสร้างแบตช์ไฟล์ที่มีเนื้อหา: ตั้ง VDATE=%วันที่:~3% ไฟล์แบตช์ดังกล่าวสามารถดำเนินการผ่านการโหลดอัตโนมัติหรือเป็นส่วนหนึ่งของสคริปต์ เมื่อผู้ใช้เข้าสู่ระบบโดเมน หรือใช้เครื่องกำหนดเวลาในเวลาที่กำหนด และคุณจะมีที่เก็บข้อมูลสำคัญตามลำดับเวลาอยู่เสมอ
ไฟล์แบตช์นี้สร้างการเก็บถาวรเนื้อหาของโฟลเดอร์ "My Documents" ของผู้ใช้ Win2K/XP โดยวางไว้ในไดเร็กทอรี |
ในบทความนี้:
- การกำหนดตัวแปร
- ตัวแปรบรรทัดคำสั่ง (พารามิเตอร์การเรียกไฟล์ค้างคาว)
- ถ้าตัวดำเนินการแบบมีเงื่อนไข
- ฟังก์ชั่น
- การใช้ค่าส่งคืน (กำลังประมวลผลโค้ดออก)
การกำหนดตัวแปร
ชุด<Имяпеременной>=<Значениепеременной>
คำสั่ง 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)