ตัวแปรตั้งค่าสภาพแวดล้อม 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 ต้องเข้าถึงค่าของตัวแปรเฉพาะโดยตรง ขั้นตอนการเปรียบเทียบอักขระต่ออักขระจะไม่ได้รับการดำเนินการ สิ่งสำคัญคือต้องพิจารณาข้อเท็จจริงที่ว่าการทดแทนนั้นไม่ถือเป็นการเรียกซ้ำ การตรวจสอบจะดำเนินการเพียงครั้งเดียว
(คำสั่ง) ให้คุณทำได้โดยไม่ต้องระบุ เส้นทางที่แน่นอนไปยังไดเร็กทอรี เช่น ถ้าเราไม่รู้จดหมายล่วงหน้า ดิสก์ระบบเราสามารถใช้ตัวแปรได้ตลอดเวลา %ไดรฟ์ระบบ%ซึ่งส่งคืนอักษรระบุไดรฟ์ที่ติดตั้งระบบปฏิบัติการไว้ นอกจากนี้ ตัวแปรยังใช้ในการปรับโค้ดให้เหมาะสมอีกด้วย - คุณสามารถกำหนดพารามิเตอร์ที่ทำซ้ำซ้ำๆ (เช่น รีจิสตรีคีย์) ให้เป็นตัวแปรแบบสั้นและนำไปใช้ได้ บทความนี้จะกล่าวถึงในรายละเอียด เทคนิคต่างๆการทำงานกับตัวแปรตลอดจนวิธีการเปลี่ยนแปลงและสร้างตัวแปรใหม่ ตอนนี้เรามาพูดถึงทุกอย่างตามลำดับ
การจำแนกประเภทของตัวแปรสภาพแวดล้อม
วิธีใช้ Windows จะแยกความแตกต่างระหว่างตัวแปรสภาพแวดล้อมสองประเภท: ระบบและภายในเครื่อง ตัวแปรระบบส่งคืน ค่าเดียวกันสำหรับผู้ใช้ทุกคน ตัวอย่างเช่น, %ไดรฟ์ระบบ%- ตัวอักษรของไดรฟ์ระบบและจะเหมือนกันสำหรับผู้ใช้ทุกคน แต่ค่าที่ส่งคืนโดยตัวแปรท้องถิ่นจะแตกต่างกันไปขึ้นอยู่กับผู้ใช้ที่เข้าสู่ระบบ ตัวอย่างเช่น, %โปรไฟล์ผู้ใช้%สามารถส่งคืน C:\Documents and Settings\CurrentUser โดยที่ CurrentUser คือชื่อ บัญชีผู้ใช้
ค้นหาว่ามีตัวแปรสภาพแวดล้อมใดบ้าง ระบบปฏิบัติการพร้อมใช้งานสำหรับคุณและค่าใดที่ถูกกำหนดให้กับพวกเขาในปัจจุบันคำสั่งจะช่วยคุณ ชุดเรียกใช้จากบรรทัดคำสั่งโดยไม่มีพารามิเตอร์ ( เริ่ม - เรียกใช้ - cmd - ตั้งค่า- ในบทความนี้เราสนใจตัวแปรที่ระบุเส้นทางไป โฟลเดอร์ต่างๆ(แคตตาล็อก) เพิ่มเติมเล็กน้อยเกี่ยวกับบางส่วนด้านล่าง:
%SYSTEMDRIVE%|System|ส่งคืนชื่อของไดรฟ์ที่มีไดเรกทอรีรากของระบบปฏิบัติการ Windows XP/2003 (นั่นคือ ไดเรกทอรีรากของระบบ)
%SYSTEMROOT%, %WINDIR%|System|ส่งคืนตำแหน่งของไดเร็กทอรีรากของระบบปฏิบัติการ Windows /2003
%PATH%|System|ระบุพาธการค้นหาสำหรับไฟล์ปฏิบัติการ
%PROGRAMFILES%|System|ระบุพาธไปยังไดเร็กทอรีการติดตั้งโปรแกรม (ไฟล์โปรแกรม)
%COMMONPROGRAMFILES%|System|ระบุเส้นทางไป แคตตาล็อกทั่วไปโปรแกรมต่างๆ (ไฟล์โปรแกรม\ไฟล์ทั่วไป)
%TEMP% และ %TMP%|ระบบและผู้ใช้|ส่งคืนโฟลเดอร์ชั่วคราวเริ่มต้นที่ใช้โดยแอปพลิเคชันที่ผู้ใช้ที่เข้าสู่ระบบสามารถเข้าถึงได้ แอปพลิเคชั่นบางตัวต้องการตัวแปร TEMP และแอปพลิเคชั่นบางตัวจำเป็นต้องใช้ตัวแปร TMP
%USERPROFILE%|Local|ส่งคืนตำแหน่งโปรไฟล์สำหรับผู้ใช้ปัจจุบัน
%ALLUSERSPROFILE%|Local|ส่งคืนตำแหน่งของโปรไฟล์ "ผู้ใช้ทั้งหมด"
%CD%|Local|ส่งคืนเส้นทางไปยังโฟลเดอร์ปัจจุบัน
%APPDATA%|Local|ส่งคืนตำแหน่งเริ่มต้นของข้อมูลแอปพลิเคชัน
การใช้ตัวแปรในแบตช์ไฟล์
เริ่มจากตัวอย่างง่ายๆ:
CMD/แบทช์:
DEL /F /Q "%AllUsersProfile%\Main Menu\Windows Activation.lnk" DEL /F /Q "%AllUsersProfile%\Main Menu\WindowsUpdate.lnk" DEL /F /Q "%systemroot%\system32\*.scr "
ในตัวอย่างนี้ ฉันจะลบทางลัดด้านบนที่ปรากฏในเมนู Start โดยใช้ตัวแปร %โปรไฟล์ผู้ใช้ทั้งหมด%รวมถึงไฟล์ทั้งหมดด้วย ส่วนขยาย SCRจากไดเร็กทอรี Windows\system32 โดยใช้ตัวแปร %รูทระบบ%- แทนที่จะเป็น DEL /F /Q อย่างที่คุณเข้าใจอาจมีอะไรก็ได้ตั้งแต่คำสั่ง copy COPY ไปจนถึงคำสั่งเพื่อเปิดการติดตั้งแอปพลิเคชันที่เราต้องการพร้อมพารามิเตอร์บรรทัดคำสั่งทั้งหมดหากจำเป็น
ในคำสั่งทั้งหมดฉันใช้ "เครื่องหมายคำพูด" โดยเฉพาะ - นี่ไม่ใช่เรื่องบังเอิญ เส้นทางทั้งหมด รวมถึงตัวแปร จะต้องอยู่ในเครื่องหมายคำพูด หากคุณใช้เส้นทางที่มีการเว้นวรรค แม้ว่าตัวตัวแปรเองจะไม่มีเครื่องหมายคำพูด หลังจากที่ระบบแยกวิเคราะห์แล้ว ช่องว่างอาจปรากฏในเส้นทาง (ตัวอย่างเช่น %ไฟล์โปรแกรม%ในไฟล์ C:\Program) ไม่ว่าในกรณีใด ควรใช้เครื่องหมายคำพูด - นี่เป็นแนวปฏิบัติที่ดีในการออกแบบไฟล์คำสั่ง
วิธีการตั้งค่าตัวแปรของคุณ
ตัวอย่างข้างต้นใช้ตัวแปรสภาพแวดล้อมที่มีอยู่แล้ว และคุณอาจสังเกตเห็นสัญลักษณ์เปอร์เซ็นต์ที่อยู่รอบๆ ชื่อตัวแปร อักขระเหล่านี้จำเป็นเพื่อให้สามารถทดแทนตัวแปรบนบรรทัดคำสั่งหรือในแบตช์ไฟล์ สัญลักษณ์เปอร์เซ็นต์ระบุว่า Cmd.exe ควรเข้าถึงค่าของตัวแปรแทนที่จะทำการเปรียบเทียบแบบอักขระต่ออักขระ ด้านล่างนี้คุณจะเห็นวิธีการทำงาน คุณสามารถตั้งค่าตัวแปรของคุณในไฟล์แบตช์ด้วยคำสั่ง SET
คำสั่ง SET
สามารถสอบถามเข้ามาได้เลย ไฟล์แบตช์ตัวแปรของคุณโดยใช้คำสั่ง SET เดียวกัน
หากต้องการเพิ่มตัวแปร ให้ป้อนที่บรรทัดคำสั่ง:
รหัส:
ตั้งค่า Variable_name=value
หากต้องการแสดงตัวแปร ให้ป้อนที่บรรทัดคำสั่ง:
รหัส:
ตั้งค่าตัวแปร_ชื่อ
หากต้องการลบตัวแปร ให้ป้อนที่บรรทัดคำสั่ง:
รหัส:
ตั้งค่าตัวแปร_ชื่อ=
ตัวอย่างเช่น,
รหัส:
SET mydir=D:\Files\Work
ตั้งค่าตัวแปร มิดีร์ซึ่งจะคืนเส้นทางไปยังโฟลเดอร์ที่ระบุ คุณสามารถอ่านเพิ่มเติมเกี่ยวกับทีมได้จาก ชุด /?.
หมายเหตุสำคัญ:ตัวแปรที่ตั้งค่าโดยคำสั่ง set จะใช้ได้เฉพาะในช่วงระยะเวลาของเซสชันคำสั่ง (ดูด้านล่าง) ที่ตั้งค่าไว้เท่านั้น
ตัวแปรเหล่านี้สามารถสร้างขึ้นได้ เช่น สำหรับเส้นทางใดๆ คุณเพียงแค่ต้องตั้งค่าหรือค้นหาอัลกอริธึมสำหรับการกำหนดตัวแปรในแต่ละสถานการณ์โดยใช้ ตัวอย่างสำเร็จรูปหรือสร้างของคุณเองตามพวกเขา โดยทั่วไปแล้ว ตัวแปรดังกล่าวจะถูกสร้างขึ้นในเซสชันปัจจุบันโดยไฟล์แบตช์โดยใช้คำสั่งบางคำสั่ง
ตัวอย่างการกำหนดตัวแปรในไฟล์ RunOnceEx.cmdการนำเข้าการตั้งค่าไปยังรีจิสทรี
CMD/แบทช์:
@echo off SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx SET i=100 REG เพิ่ม %KEY% /V TITLE /D "การติดตั้งแอปพลิเคชัน" /f REG เพิ่ม %KEY%\%i% /VE /D "WinRar 3.51" /f REG เพิ่ม %KEY%\%i% /V 1 /D "%systemdrive%\install\Software\WinRar.exe /s" /f REG เพิ่ม %KEY%\%i% /V 2 / D "REGEDIT /S %systemdrive%\install\Software\rar_set.reg /s" /f SET /A i+=1
ใน สคริปต์นี้คำสั่ง SET ระบุตัวแปรสองตัว - %ฉัน%และ %สำคัญ%- โปรดทราบว่ามีการระบุไว้โดยไม่มีสัญลักษณ์เปอร์เซ็นต์ แต่หากต้องการเข้าถึง %% เป็นสิ่งจำเป็นอยู่แล้ว ตัวแปร %สำคัญ%ทำหน้าที่ลดความซับซ้อนและเพิ่มประสิทธิภาพโค้ด ยังคงไม่เปลี่ยนแปลงตลอดเซสชันคำสั่งปัจจุบัน ทำให้ไม่จำเป็นต้องรวมคีย์รีจิสทรีในโค้ดในแต่ละครั้ง ทุกครั้งที่ปรากฏในโค้ด %สำคัญ%มันจะถูกแทนที่ด้วย HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx แต่ %ฉัน%ทำหน้าที่สำหรับการกำหนดหมายเลขตามลำดับของส่วนรีจิสทรี ด้วยค่าเริ่มต้นที่ 100 ตัวแปรจะเพิ่มขึ้นทีละหนึ่งโดยใช้คำสั่ง SET /A i+=1 หลังจากแต่ละบล็อคของคำสั่ง ส่งผลให้เกิดลำดับ 100, 101, 102 เป็นต้น ดังนั้นเส้น
รหัส:
REG เพิ่ม %KEY%\%i% /V 1 /D "%systemdrive%\install\Software\WinRar.exe /s" /f
จริงๆ แล้วมันจะทำงานแบบนี้
รหัส:
REG เพิ่ม HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\100 /V 1 /D "C:\install\Software\WinRar.exe /s" /f
โปรดทราบว่าตัวอย่างไฟล์ยังใช้ตัวแปรระบบด้วย %ไดรฟ์ระบบ%ซึ่งสอดคล้องกับอักษรระบุไดรฟ์ของระบบ
ตัวอย่างการกำหนดตัวแปรในไฟล์คำสั่งที่ติดตั้งแอปพลิเคชันจากซีดี:
รหัส:
สำหรับ %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) ให้ทำถ้ามี %%i:\WIN51 ให้ตั้งค่า CDROM=%%i: start /wait “%CDROM%\INSTALL\DVDTools\NBRom\Nero.exe”
ในตัวอย่างนี้ รายการไดรฟ์ทั้งหมดจะถูกค้นหา ไฟล์เฉพาะ(WIN51). หากตรวจพบบนดิสก์ตัวใดตัวหนึ่ง ดิสก์ตัวหลังจะถูกกำหนดตัวแปร %ซีดีรอม%จากนั้นการติดตั้งจะเกิดขึ้น ซอฟต์แวร์โดยใช้เส้นทางที่ระบุโดยตัวแปรที่สร้างขึ้น
การเปลี่ยนตัวแปรสภาพแวดล้อมและเพิ่มตัวแปรของคุณเอง
ดังที่ได้กล่าวไปแล้วข้างต้น การกระทำของตัวแปร ระบุโดยคำสั่ง set ถูกจำกัดไว้ที่เซสชันคำสั่งปัจจุบัน หากคุณต้องการรับตัวแปรระบบหรือผู้ใช้จากตัวแปรชั่วคราว คุณต้องลงทะเบียนตัวแปรดังกล่าวในรีจิสทรี ซึ่งสามารถทำได้หลายวิธี
ยูทิลิตี้ setenv
ยูทิลิตี้นี้ทำงานจากบรรทัดคำสั่ง (เว็บไซต์ ดาวน์โหลด) ยูทิลิตี้นี้ใช้งานง่ายมาก (setenv /?)
การตั้งค่าผู้ใช้ | setenv -u ค่าตัวแปรชื่อ
การตั้งค่าระบบ | setenv -m ค่าตัวแปรชื่อ
การตั้งค่า ผู้ใช้เริ่มต้น | setenv -d ค่าตัวแปรชื่อ
การตั้งค่าเซสชันผู้ใช้ปัจจุบัน | ค่า setenv -v ชื่อตัวแปร
สมมติว่า หากคุณต้องการรับตัวแปร %temp% ในขั้นตอนการติดตั้ง คุณสามารถทำได้จาก cmdlines.txt ตัวอย่างเช่น:
รหัส:
:: การสร้างและการตั้งค่าโฟลเดอร์ Temp... md %systemdrive%\Temp setenv -u Temp %systemdrive%\Temp setenv -u Tmp %systemdrive%\Temp
ยูทิลิตี้นี้สะดวกเพราะหลังจากตั้งค่าตัวแปรแล้วสามารถใช้งานได้ทันที เกือบจะในทันที - ในเซสชั่นของทีมถัดไป หากต้องการใช้ในเซสชันปัจจุบัน คุณสามารถใช้คำสั่ง set ที่คุ้นเคยเดิมได้:
รหัส:
:: การสร้าง #EgOrus# var set EgOrus=D:\EgOrus setenv -u EgOrus %EgOrus%
การนำเข้าการตั้งค่าไปยังรีจิสทรีหากคุณดำเนินการเปลี่ยนแปลงรีจิสทรีหลังจากการเข้าสู่ระบบครั้งแรกตัวแปรจะเริ่มทำงานหลังจากรีบูตหรือสิ้นสุดเซสชันผู้ใช้เท่านั้น แน่นอนในระหว่างกระบวนการติดตั้งอัตโนมัติคุณสามารถนำเข้าพารามิเตอร์ที่ต้องการไปยัง T-12 (ดูบทความ Registry Tweaks) และบายพาส ปัญหานี้- หากคุณไม่ต้องการใช้ตัวแปรที่กำหนดในเซสชันผู้ใช้ปัจจุบัน การนำเข้าสู่รีจิสทรีก็อาจเหมาะกับคุณเช่นกัน ฉันจะไม่อธิบายขั้นตอนการนำเข้าไฟล์ REG อีก แต่ฉันจะดูมัน คำสั่ง REGเพิ่มด้วยตัวอย่างเฉพาะ
สมมติว่าคุณสนใจที่จะมีตัวแปรในระบบ %ซีดีรอม%บน อย่างต่อเนื่องและติดตั้งระหว่างการติดตั้งแอปพลิเคชันจากซีดี ตามโค้ดข้างต้น หลังจากกำหนดตัวแปรแล้ว คุณต้องกำหนดตัวแปรให้กับระบบ
CMD/แบทช์:
สำหรับ %%i ใน (C D E F G H I J K L M N O P Q R S T U V W X Y Z) ให้ทำถ้ามี %%i:\WIN51 ตั้ง CDROM=%%i: REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v cdrom /d %CDROM% / ฉ
เมื่อพบไฟล์ WIN51 ไดรฟ์ที่พบจะถูกกำหนดตัวแปรท้องถิ่น %ซีดีรอม%ซึ่งถูกกำหนดให้เป็นตัวแปรระบบคงที่ทันทีผ่านการนำเข้ารีจิสทรี วิธีการนี้ถูกเสนอในหัวข้อหนึ่งในการประชุม Oszone Sanja Alone ขณะเดียวกันคุณก็ค้นพบว่า โดยที่การตั้งค่าตัวแปรระบบถูกเก็บไว้ในรีจิสทรี การตั้งค่าตัวแปรผู้ใช้จะถูกจัดเก็บไว้ใน HKCU\Environment เส้นทางที่ส่งคืนโดยตัวแปร %PROGRAMFILES% และ %COMMONPROGRAMFILES% สามารถดูได้ในพารามิเตอร์ ProgramFilesDir และ CommonFilesDir ใน HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion แต่ไม่ควรเปลี่ยนแปลงที่นั่น ไดเร็กทอรีการติดตั้งโปรแกรม (นอกเหนือจาก %SystemDrive%\Program Files) จะต้องได้รับการกำหนดค่าผ่านไฟล์คำตอบ
ประวัติย่อ
เชลล์คำสั่ง Windows (cmd.exe) เป็นสิ่งที่มีประโยชน์มาก เครื่องมืออันทรงพลังทำงานกับระบบ ด้วยความช่วยเหลือ ไฟล์แบตช์เป็นไปได้ที่จะทำให้งานจำนวนพอสมควรเป็นอัตโนมัติ ซึ่งเป็นสาเหตุที่ว่าทำไมงานเหล่านั้นถึงถูกใช้บ่อย การติดตั้งอัตโนมัติหน้าต่าง การใช้ตัวแปรอย่างชำนาญในไฟล์แบตช์ช่วยให้คุณสามารถแก้ไขปัญหาได้หลากหลาย การทำงานกับเชลล์คำสั่งจะมีประสิทธิภาพมากขึ้นและในขณะเดียวกันโค้ดสำหรับไฟล์แบตช์ก็ง่ายขึ้น คุณสามารถดูตัวอย่างอื่นๆ ของการใช้ตัวแปรได้ที่หน้าเว็บไซต์หรือฟอรั่ม ตัวอย่างทั้งหมดที่ใช้ในบทความนี้นำมาจากสคริปต์ของผู้เข้าร่วมฟอรัม OsZone.ru ซึ่งต้องขอบคุณพวกเขามาก
คำศัพท์เฉพาะทาง
เชลล์คำสั่ง- นี่แยกจากกัน ผลิตภัณฑ์ซอฟต์แวร์ซึ่งให้การสื่อสารโดยตรงระหว่างผู้ใช้และระบบปฏิบัติการ ข้อความ ส่วนต่อประสานกับผู้ใช้บรรทัดคำสั่งให้สภาพแวดล้อมที่แอปพลิเคชันและ สาธารณูปโภคด้วยส่วนต่อประสานข้อความ
cmd.exe- ล่ามคำสั่งนั้น เชลล์คำสั่ง Windows OS ใช้เพื่อแปลคำสั่งที่ป้อนเป็นรูปแบบที่ระบบเข้าใจ
เซสชั่นของทีมสามารถเริ่มต้นได้โดยการเปิดตัว cmd.exeและโดยการรันแบตช์ไฟล์ กล่าวอีกนัยหนึ่ง เชลล์คำสั่งปัจจุบันจะถูกสร้างขึ้น ดังนั้น การออกจากเชลล์นี้ (เช่น การจบแบตช์ไฟล์) จะเป็นการสิ้นสุดเซสชันคำสั่ง
เซสชันผู้ใช้(เซสชันผู้ใช้) เริ่มต้นเมื่อผู้ใช้เข้าสู่ระบบ (เข้าสู่ระบบ) และสิ้นสุดเมื่อผู้ใช้ออกจากระบบ (ออกจากระบบ)
ในบทความนี้:
- การกำหนดตัวแปร
- ตัวแปรบรรทัดคำสั่ง (พารามิเตอร์การเรียกไฟล์ค้างคาว)
- ถ้าตัวดำเนินการแบบมีเงื่อนไข
- ฟังก์ชั่น
- การใช้ค่าส่งคืน (กำลังประมวลผลโค้ดออก)
การกำหนดตัวแปร
ชุด<Имяпеременной>=<Значениепеременной>
คำสั่ง 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 นั้นเอง วิธีที่สองดูเหมือนจะสะดวกกว่าสำหรับฉัน - การกำหนดให้มีคนเรียกใช้สคริปต์ของคุณด้วยพารามิเตอร์บางตัวนั้นไม่ใช่เรื่องดี
ด้วยเหตุนี้ ตัวอย่างที่ "ผิด" ก่อนหน้านี้สามารถแก้ไขได้ดังนี้:
ถ้า "%BUILDMODE%" == "debug" (
setlocal ที่เปิดใช้งานelayedexpansion
ตั้งค่า OPTFLAGS=/Od
Echo INFO: การตั้งค่าสภาพแวดล้อมโหมดแก้ไขข้อบกพร่อง
) อื่น (
ตั้งค่า CCFLAGS=!OPTFLAGS! /MDd /Z7
ตั้งค่า OPTFLAGS=/O2
Echo INFO: การตั้งค่าสภาพแวดล้อมโหมดรีลีส
ตั้งค่า CCFLAGS=!OPTFLAGS! /นพ
แต่ไม่ว่าในกรณีใด นี่ยังดีกว่าจำนวนแท็กและการเปลี่ยนภาพที่บ้าคลั่งมาก
ฟังก์ชั่น
เป็นไปได้ไหมที่จะสร้างฟังก์ชั่นในไฟล์ 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
โปรดทราบว่าการวิเคราะห์รหัสทางออกไม่ได้เริ่มต้นจากศูนย์ แต่จากค่าสูงสุดที่เป็นไปได้ ความจริงก็คือการตรวจสอบดังกล่าวหมายถึง: “ถ้าระดับข้อผิดพลาดมากกว่าหรือเท่ากับค่าแล้ว...” นั่นคือถ้าเราตรวจสอบโดยเริ่มจากศูนย์ ค่าใดๆ ก็ตามในบรรทัดแรกจะเป็นจริงซึ่งไม่ถูกต้อง
นี่เป็นข้อผิดพลาดที่พบบ่อยที่สุดในโปรแกรมประเภทนี้
การประกาศตัวแปรของคุณเองเป็นส่วนสำคัญของภาษาการเขียนโปรแกรมเกือบทุกภาษา ดังนั้นในภาษา vbscript ตัวแปรจึงถูกประกาศโดยใช้คำสำคัญ สลัวและใน jscript จะใช้ คำหลัก var.
ตัวแปรคำสั่ง สตริงของ Windowsแสดงถึงอักขระที่แตกต่างกันเล็กน้อย ที่นี่คุณไม่สามารถประกาศกลุ่มของตัวแปร cmd หรือกำหนดค่าให้กับตัวแปรหลายตัวในบรรทัดคำสั่งได้ทันที เรามาดูกันดีกว่า บรรทัดถัดไปรหัส:
เสียงสะท้อน % Var3% เสียงสะท้อน % VAR3% เสียงสะท้อน % vAr3% |
จุดหนึ่งที่ควรพิจารณาคือการบันทึก
ตั้ง var1 = 100 |
ตั้งค่า var1 = 100 |
นี่ไม่ใช่สิ่งเดียวกันนั่นคือในกรณีแรกเราสร้างตัวแปร cmd "var1" และในกรณีที่สอง - "var1" สถานการณ์ก็คล้ายๆ กับการกำหนดค่า ดังนั้น ควรใส่ใจกับพื้นที่!!!
เราเห็นว่าเราสามารถแสดงค่าของตัวแปรโดยใช้ฟังก์ชันได้ เอคโค่เราใส่ไว้ในสัญลักษณ์ "%" สำหรับ ชุด– เราเพียงแค่เขียนชื่อของมัน มันก็คุ้มค่าที่จะพิจารณาว่าตัวแปรทั้งหมดถูกกำหนดประเภทสตริง
หากคุณรันคำสั่ง cmd set ซึ่งจะแสดงรายการตัวแปรทั้งหมดและค่าของมัน เซสชันปัจจุบันคุณจะเห็นว่าสิ่งที่สร้างขึ้นใหม่ก็จะปรากฏขึ้นที่นั่นด้วย ตัวแปร cmdและ . เราจะสามารถเข้าถึงสิ่งเหล่านี้ได้ตลอดเซสชั่นทั้งหมด
หากต้องการล้างเนื้อหาในบรรทัดคำสั่งของ Windows คุณเพียงแค่ต้องกำหนดค่าว่าง:
จะพิมพ์บรรทัด %Var3% และคำสั่ง
ใน ในตัวอย่างนี้เราหลีกเลี่ยงอักขระ & และ ^ ดังนั้นจึงกำหนดวลี:
"100 & 3 = 5"
"100 ^3"
เป็นที่น่าสังเกตว่าหากเราพยายามแสดงค่าของตัวแปรเหล่านี้โดยใช้ ฟังก์ชัน cmdตั้งค่าไว้ก็จะไม่มีปัญหา แต่ถ้าเราใช้ฟังก์ชัน echo เราก็จะได้ผลลัพธ์ที่แตกต่างไปจากที่เราคาดไว้โดยสิ้นเชิง ดังนั้น เมื่อคุณพยายามรันคำสั่งต่อไปนี้:
ตอนนี้เมื่อรันโค้ด:
เสียงสะท้อน %var4% เสียงก้อง %var5% |
ทุกอย่างจะเป็นไปด้วยดี
เป็นที่ชัดเจนว่าตัวแปร cmd ที่สร้างขึ้นในหน้าต่างบรรทัดคำสั่งปัจจุบันไม่พร้อมใช้งานสำหรับกระบวนการอื่น ๆ แต่สามารถตั้งค่าข้อจำกัดที่ยิ่งใหญ่กว่าได้
จะถามอะไร พื้นที่ท้องถิ่นการมองเห็นมีการใช้บล็อก SETLOCAL...ENDLOCAL- ตัวแปร cmd บรรทัดคำสั่ง Windows ทั้งหมดที่ประกาศไว้ตรงกลางบล็อกนี้จะไม่ปรากฏให้เห็นภายนอกบล็อก เปิดตัวแก้ไข (ฉันใช้โปรแกรมแก้ไข กระดาษจดบันทึก++เนื่องจากจะไฮไลท์โค้ดทันที) และเขียนโค้ดบรรทัดต่อไปนี้ลงไป:
เราจะเห็นว่าอันดับแรกเราประกาศ var1 และกำหนดค่าให้เป็น 0 จากนั้นเราประกาศตัวแปรที่มีชื่อเดียวกันอีกครั้ง แต่อยู่ในบล็อก SETLOCAL...ENDLOCAL- สคริปต์ส่งออกค่าของ var1 ทั้งภายในและส่วนกลาง ฉันใช้ตัวอักษรละตินโดยเฉพาะเพื่อที่ว่าถ้าเกิดอะไรขึ้นคุณจะไม่โดนต้มตุ๋น
02/12/58 21.1Kเหตุใดจึงมีความวุ่นวายในโลกนี้? ใช่ เพราะผู้ดูแลระบบของเราลืมที่จะปฏิบัติหน้าที่ของตน หรือเพิ่งสูญเสียไป รายการคำสั่งคำสั่งจากโลกของเรา แม้ว่านี่จะเป็นรูปลักษณ์ดั้งเดิมของลำดับสิ่งต่าง ๆ ที่มีอยู่ แต่ก็ยังสะท้อนถึงความจริงบางส่วนที่เราต้องการ: เมื่อใช้บรรทัดคำสั่ง คุณสามารถเรียกคืนลำดับไปยังคอมพิวเตอร์ของคุณได้อย่างง่ายดาย:
บรรทัดคำสั่งคืออะไร
บรรทัดคำสั่งเป็นเครื่องมือที่ง่ายที่สุดในการจัดการระบบปฏิบัติการของคอมพิวเตอร์ของคุณ การควบคุมเกิดขึ้นโดยใช้คำสั่งและชุดอักขระที่สงวนไว้จำนวนหนึ่ง แป้นพิมพ์ข้อความโดยไม่ต้องใช้เมาส์ ( ในระบบปฏิบัติการ 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 อย่างละเอียดยิ่งขึ้น
คำสั่งสำหรับการทำงานกับเครือข่าย
บรรทัดคำสั่งช่วยให้คุณควบคุมได้ไม่เพียงเท่านั้น ระบบไฟล์พีซีแต่ก็ของเขาด้วย โอกาสในการสร้างเครือข่าย- รวมอยู่ด้วย คำสั่งเครือข่ายรวมคอนโซล จำนวนมากผู้ประกอบการเพื่อตรวจสอบและทดสอบเครือข่าย สิ่งที่เกี่ยวข้องมากที่สุดคือ:
- 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:
- Tracert – ใช้เพื่อกำหนด เส้นทางเครือข่ายถึง ทรัพยากรที่ระบุโดยการส่งข้อความเสียงสะท้อนพิเศษผ่านโปรโตคอล
- 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)