ตัวแปรโกลบอล Cmd ตัวแปรสภาพแวดล้อม

ตัวแปรตั้งค่าสภาพแวดล้อม 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 C: UsershomeDesktoptest1test2

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

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

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

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

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

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

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

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)