ความช่วยเหลือเกี่ยวกับคำสั่ง set และพารามิเตอร์ คำสั่ง SET - การทำงานกับตัวแปรสภาพแวดล้อมของ Windows

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

การจำแนกประเภทของตัวแปรสภาพแวดล้อม
วิธีใช้ Windows จะแยกความแตกต่างระหว่างตัวแปรสภาพแวดล้อมสองประเภท: ระบบและภายในเครื่อง ตัวแปรระบบส่งคืนค่าเดียวกันสำหรับผู้ใช้ทั้งหมด ตัวอย่างเช่น, %ไดรฟ์ระบบ%- ตัวอักษรของไดรฟ์ระบบและจะเหมือนกันสำหรับผู้ใช้ทุกคน แต่ค่าที่ส่งคืนโดยตัวแปรท้องถิ่นจะแตกต่างกันไปขึ้นอยู่กับผู้ใช้ที่เข้าสู่ระบบ ตัวอย่างเช่น, %โปรไฟล์ผู้ใช้%สามารถส่งคืน C:\Documents and Settings\CurrentUser โดยที่ CurrentUser คือชื่อบัญชีผู้ใช้

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

ตัวแปร|ประเภท|คำอธิบาย
%SYSTEMDRIVE%|System|ส่งคืนชื่อของไดรฟ์ที่มีไดเรกทอรีรากของระบบปฏิบัติการ Windows XP/2003 (นั่นคือ ไดเรกทอรีรากของระบบ)
%SYSTEMROOT%, %WINDIR%|System|ส่งคืนตำแหน่งของไดเร็กทอรีรากของระบบปฏิบัติการ Windows /2003
%PATH%|System|ระบุพาธการค้นหาสำหรับไฟล์ปฏิบัติการ
%PROGRAMFILES%|System|ระบุพาธไปยังไดเร็กทอรีการติดตั้งโปรแกรม (ไฟล์โปรแกรม)
%COMMONPROGRAMFILES%|System|ระบุพาธไปยังไดเร็กทอรีโปรแกรมทั่วไป (Program Files\Common Files)
%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 ADD โดยใช้ตัวอย่างเฉพาะ

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

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) เป็นเครื่องมือที่ทรงพลังมากสำหรับการทำงานกับระบบ ไฟล์แบตช์สามารถทำงานอัตโนมัติได้จำนวนมาก ซึ่งเป็นสาเหตุที่ว่าทำไมไฟล์เหล่านี้จึงมักถูกใช้เพื่อติดตั้ง Windows โดยอัตโนมัติ การใช้ตัวแปรอย่างชำนาญในไฟล์แบตช์ช่วยให้คุณสามารถแก้ไขปัญหาได้หลากหลาย การทำงานกับเชลล์คำสั่งจะมีประสิทธิภาพมากขึ้นและในขณะเดียวกันโค้ดของไฟล์แบตช์ก็ง่ายขึ้น คุณสามารถดูตัวอย่างอื่นๆ ของการใช้ตัวแปรได้ที่หน้าเว็บไซต์หรือฟอรั่ม ตัวอย่างทั้งหมดที่ใช้ในบทความนี้นำมาจากสคริปต์ของผู้เข้าร่วมฟอรัม OsZone.ru ซึ่งต้องขอบคุณพวกเขามาก

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

cmd.exe- ตัวแปลคำสั่งที่เชลล์คำสั่ง Windows OS ใช้เพื่อแปลคำสั่งที่ป้อนเป็นรูปแบบที่ระบบเข้าใจ

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

เซสชันผู้ใช้(เซสชันผู้ใช้) เริ่มต้นเมื่อผู้ใช้เข้าสู่ระบบ (เข้าสู่ระบบ) และสิ้นสุดเมื่อผู้ใช้ออกจากระบบ (ออกจากระบบ)

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

ไวยากรณ์

ชุด [[/ก [การแสดงออก]] [/หน้า [ตัวแปร = ]] เส้น]

ตัวเลือก

/a บ่งชี้ว่าพารามิเตอร์ เส้นเป็นนิพจน์ตัวเลขที่คำนวณได้ /p ตั้งค่าสายอินพุต

ตัวแปร ระบุชื่อของตัวแปรที่มีค่าที่คุณต้องการตั้งค่าหรือเปลี่ยนแปลง

  • string ตั้งค่าสตริงสำหรับตัวแปรที่ระบุ ชุด- แสดงความช่วยเหลือบนบรรทัดคำสั่ง

    หมายเหตุ ชุดโดยใช้คำสั่ง

  • ในคอนโซลการกู้คืน

    ทีม<, >พร้อมพารามิเตอร์อื่นๆ มีอยู่ในคอนโซลการกู้คืน เส้นการใช้อักขระพิเศษ " สัญลักษณ์ & , |, &, ^ เป็นอักขระเชลล์พิเศษ คุณต้องนำหน้าด้วยอักขระควบคุม (^) หรือใส่ไว้ในเครื่องหมายคำพูดเมื่อใช้อักขระในพารามิเตอร์" (ตัวอย่างเช่น,

  • content_line

    เครื่องหมาย ชุด- เมื่อคุณอ้างอิงสตริงที่มีอักขระพิเศษ เครื่องหมายคำพูดจะถือว่าเป็นส่วนหนึ่งของค่าตัวแปรสภาพแวดล้อม

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

    ตัวแปรสภาพแวดล้อมใช้เพื่อควบคุมการทำงานของไฟล์แบตช์และโปรแกรมบางรายการ และเพื่อควบคุมการทำงานของ Windows XP และระบบย่อย MS-DOS ทีม ชุดมักใช้ในไฟล์ Autoexec.nt เพื่อตั้งค่าตัวแปรสภาพแวดล้อม

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

    เมื่อทีมงาน

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

  • เมื่อคุณระบุค่าสำหรับตัวแปรและสตริง ค่าของตัวแปรจะถูกเพิ่มลงในสภาพแวดล้อม และสตริงจะถูกแมปกับตัวแปรนั้น หากมีตัวแปรอยู่แล้ว ค่าใหม่จะแทนที่ค่าเก่า /ก

    ถ้าอยู่ในทีม /กหากระบุเฉพาะชื่อตัวแปรและเครื่องหมายเท่ากับ (ไม่มีค่า) ค่าใดๆ จะไม่ถูกกำหนดให้กับตัวแปรสภาพแวดล้อมอีกต่อไป ซึ่งเทียบเท่ากับการลบตัวแปรสภาพแวดล้อม

    การใช้งาน

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

    ค่าตัวเลขเป็นเลขทศนิยม ยกเว้นตัวเลขที่นำหน้าด้วย 0x สำหรับเลขฐานสิบหก และ 0 สำหรับเลขฐานแปด ดังนั้น 0x12 จึงเหมือนกับ 18 และ 022 การแทนเลขฐานแปดต้องได้รับการดูแลเอาใจใส่ ตัวอย่างเช่น 08 และ 09 ไม่ถูกต้องเนื่องจาก 8 และ 9 ไม่ใช่เลขฐานแปด

  • เมื่อคุณระบุค่าสำหรับตัวแปรและสตริง ค่าของตัวแปรจะถูกเพิ่มลงในสภาพแวดล้อม และสตริงจะถูกแมปกับตัวแปรนั้น หากมีตัวแปรอยู่แล้ว ค่าใหม่จะแทนที่ค่าเก่า /หน้า

    ใช้เมื่อคุณไม่จำเป็นต้องเปิดใช้งานบรรทัดคำสั่ง

  • รองรับการขยายตัวแปรสภาพแวดล้อมด้วยความล่าช้า

    เพิ่มการรองรับการขยายตัวแปรสภาพแวดล้อมด้วยความล่าช้า การสนับสนุนนี้ถูกปิดใช้งานโดยค่าเริ่มต้น คุณสามารถเปิดหรือปิดใช้งานได้โดยใช้คำสั่ง คำสั่ง /v.

  • การทำงานกับส่วนขยายคำสั่ง

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

  • string ตั้งค่าสตริงสำหรับตัวแปรที่ระบุ ชุดในไฟล์แบตช์

    เมื่อสร้างไฟล์แบตช์ให้ใช้คำสั่ง ชุดเพื่อสร้างตัวแปรและใช้เป็นตัวแปรตัวเลขจาก %0 ถึง %9 - คุณยังสามารถใช้ตัวแปรจาก %0 ถึง %9 เป็นอินพุตสำหรับคำสั่ง ชุด.

  • การเข้าถึงตัวแปรคำสั่ง ชุดจากโปรแกรมแพ็คเกจ

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

ตัวอย่าง

หากต้องการตั้งค่าตัวแปรสภาพแวดล้อมชื่อ TEST^1 ให้ป้อนคำสั่ง:

ตั้งค่า testVar=test^1

หากต้องการตั้งค่าตัวแปรสภาพแวดล้อมชื่อ TEST&1 ให้ป้อนคำสั่ง:

ตั้งค่า testVar=test^&1

คำสั่งตัวแปรค่า ชุดกำหนดทุกสิ่งที่ตามหลังเครื่องหมายเท่ากับ (=)

เมื่อเข้า:

ตั้งค่า testVar = "ทดสอบ ^ 1"

ผลลัพธ์จะเป็นดังนี้:

testVar = "ทดสอบ ^ 1"

ในการตั้งค่าตัวแปรสภาพแวดล้อม INCLUDE เพื่อให้เชื่อมโยงกับสตริง C:\Inc (ไดเร็กทอรี Inc บนไดรฟ์ C) คุณสามารถใช้คำสั่งต่อไปนี้:

ชุดรวม=c:\inc

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

จะถูกแทนที่ด้วยสตริง C:\Inc ชุดคุณยังสามารถใช้คำสั่ง

ในโปรแกรมแบตช์ที่เพิ่มไดเร็กทอรีใหม่ให้กับตัวแปรสภาพแวดล้อม PATH ตัวอย่างเช่น:
@ปิดเสียงสะท้อน
rem ADDPATH.BAT เพิ่มไดเร็กทอรีใหม่
rem ไปยังตัวแปรสภาพแวดล้อมของเส้นทาง
กำหนดเส้นทาง=%1;%เส้นทาง%

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

เส้นทาง=C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 ตระกูล 6 รุ่น 8 Stepping 1, ของแท้ Intel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0801
ProgramFiles=C:\Program Files
PROMPT=$P$G

เทคนิคและคุณสมบัติบางประการของการทำงานกับคำสั่ง Set สามารถพบได้ในส่วนการประมวลผลข้อมูลทางคณิตศาสตร์

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

บางครั้งก็จำเป็นต้องสร้าง ตัวแปรวันที่และเวลาวี cmd/batสคริปต์ หน้าต่างในแบบที่เราต้องการ ไม่ใช่วิธีที่ระบบปฏิบัติการมอบให้เรา

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

ในตัวอย่างต่อไปนี้ เราจะเห็นการแจกแจงตัวแปรตามรูปแบบที่เราต้องการ

ชั่วโมง- ชั่วโมง 2 หลัก (นั่นคือชั่วโมงจะได้รับในรูปแบบต่อไปนี้ - 01, 02, ... , 09, ... , 12, ... 24)

ม. - นาที 2 ตัวอักษร

s - วินาที 2 สัญญาณ

ms - มิลลิวินาที 2 หลัก ด้วยเหตุผลบางประการตั้งแต่ 0 ถึง 99

dd - สัญญาณวันที่ 2

มม. - เดือน 2 ตัวอักษร

ปปปป - ปี 4 หลัก

ตัวอย่างการใช้ตัวแปร %วันที่%และ %เวลา%ในสคริปต์ คำสั่ง / ค้างคาวหน้าต่าง:

ในโปรแกรมแบตช์ที่เพิ่มไดเร็กทอรีใหม่ให้กับตัวแปรสภาพแวดล้อม PATH ตัวอย่างเช่น:
ตั้งชั่วโมง=%เวลา:~0.2%
ตั้ง ม.=%เวลา:~3.2%
ตั้งค่า s=%เวลา:~6.2%
ตั้งค่า ms=%เวลา:~9.2%
ตั้งค่าเคอร์ไทม์=%h%:%m%:%s%:%ms%
ตั้ง dd=%วันที่:~0.2%
ตั้ง มม.=%วันที่:~3.2%
ตั้ง ปปปป=%วันที่:~6.4%
ตั้ง curdate=%dd%-%mm%-%yyyy%
ตั้งค่า curdatetime=%curdate% %curtime%

echo เวลาปัจจุบันคือ %curdatetime%

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

ตามทฤษฎี คุณสามารถแยกส่วนของตัวแปรใดๆ ก็ได้ในลักษณะเดียวกัน ประเด็นก็คือ รูปแบบที่นี่จะเป็นดังนี้:

หลักแรกหลังจาก: ~ คือจำนวนอักขระที่เราเริ่มรับค่า หลักที่สองคือจำนวนอักขระที่จะจับ

ดังนั้นปรากฎว่าเราสามารถรับส่วนใดส่วนหนึ่งของตัวแปรสภาพแวดล้อม Windows ที่มีอยู่สำหรับความต้องการของเราได้

ฉันรู้ตัวแปรต่อไปนี้ซึ่งมีค่าที่เราสามารถรับได้:

ชื่อ
คำอธิบาย
โปรไฟล์ผู้ใช้ทั้งหมด ส่งกลับตำแหน่งของโปรไฟล์ "ผู้ใช้ทั้งหมด"
ข้อมูลแอป ส่งกลับตำแหน่งเริ่มต้นสำหรับข้อมูลแอปพลิเคชัน
ซีดี ระบุเส้นทางของโฟลเดอร์ปัจจุบัน เหมือนกับคำสั่ง CD โดยไม่มีอาร์กิวเมนต์
CMDCMDLINE คำสั่งที่แน่นอนที่ใช้ในการเริ่ม cmd.exe ปัจจุบัน
CMDEXTVERSION เวอร์ชันของส่วนขยายตัวประมวลผลคำสั่งปัจจุบัน
CommonProgramFiles ตำแหน่งของไดเร็กทอรี "Common Files" (โดยปกติจะเป็น %ProgramFiles%\Common Files)
ชื่อคอมพิวเตอร์ ชื่อคอมพิวเตอร์
คอมสเปค เส้นทางสู่การเรียกทำงานของเชลล์
วันที่ ส่งกลับวันที่ปัจจุบัน ใช้รูปแบบเดียวกับคำสั่ง date /t สร้างโดยคำสั่ง Cmd.exe
ระดับข้อผิดพลาด ส่งกลับรหัสข้อผิดพลาดของคำสั่งสุดท้ายที่ใช้ ค่าที่ไม่ใช่ศูนย์มักจะบ่งบอกถึงข้อผิดพลาด
โฮมไดรฟ์ ส่งกลับชื่อของไดรฟ์เวิร์กสเตชันในเครื่องที่เชื่อมโยงกับโฮมไดเร็กทอรีของผู้ใช้ ตั้งค่าตามตำแหน่งของไดเร็กทอรีหลัก โฮมไดเร็กทอรีของผู้ใช้ถูกระบุในสแนปอินผู้ใช้และกลุ่มภายในเครื่อง
โฮมพาธ ส่งกลับเส้นทางแบบเต็มไปยังโฮมไดเร็กตอรี่ของผู้ใช้ ตั้งค่าตามตำแหน่งของไดเร็กทอรีหลัก โฮมไดเร็กทอรีของผู้ใช้ถูกระบุในสแนปอินผู้ใช้และกลุ่มภายในเครื่อง
โฮมแชร์ ส่งกลับเส้นทางเครือข่ายไปยังโฮมไดเร็กตอรี่ที่แชร์ของผู้ใช้ ตั้งค่าตามตำแหน่งของไดเร็กทอรีหลัก โฮมไดเร็กทอรีของผู้ใช้ถูกระบุในสแนปอินผู้ใช้และกลุ่มภายในเครื่อง
เข้าสู่ระบบเซิร์ฟเวอร์ ชื่อของตัวควบคุมโดเมนที่ใช้ในการอนุญาตผู้ใช้ปัจจุบัน
NUMBER_OF_PROCESSORS จำนวนโปรเซสเซอร์ในระบบ
ระบบปฏิบัติการ ชื่อระบบปฏิบัติการ Windows XP และ Windows 2000 ปรากฏเป็น Windows_NT
เส้นทาง ระบุพาธการค้นหาสำหรับไฟล์ปฏิบัติการ
เส้นทาง ส่งคืนรายการนามสกุลไฟล์ที่ระบบปฏิบัติการพิจารณาว่าสามารถเรียกใช้งานได้
PROCESSOR_สถาปัตยกรรม สถาปัตยกรรมโปรเซสเซอร์
PROCESSOR_IDENTIFIER คำอธิบายโปรเซสเซอร์
PROCESSOR_LEVEL หมายเลขรุ่นโปรเซสเซอร์
PROCESSOR_REVISION การแก้ไขโปรเซสเซอร์
โปรแกรมไฟล์ เส้นทางไปยังโฟลเดอร์ Program Files
พร้อมท์ ส่งคืนตัวเลือกบรรทัดคำสั่งสำหรับล่ามปัจจุบัน สร้างโดยคำสั่ง Cmd.exe
สุ่ม เลขทศนิยมสุ่มตั้งแต่ 0 ถึง 32767 สร้างโดย Cmd.exe
SESSIONNAME ประเภทเซสชัน ค่าเริ่มต้นคือ "คอนโซล"
ไดรฟ์ระบบ ดิสก์ที่มีโฟลเดอร์รูทของ Windows
ระบบรูท เส้นทางโฟลเดอร์รูทของ Windows
อุณหภูมิหรือ TMP ส่งคืนโฟลเดอร์ชั่วคราวเริ่มต้นที่ใช้โดยแอปพลิเคชันที่ผู้ใช้ที่เข้าสู่ระบบสามารถเข้าถึงได้ แอปพลิเคชั่นบางตัวต้องการตัวแปร TEMP และแอปพลิเคชั่นบางตัวจำเป็นต้องใช้ตัวแปร TMP TEMP และ TMP อาจชี้ไปยังไดเร็กทอรีที่แตกต่างกัน แต่โดยปกติแล้วจะเหมือนกัน
เวลา ส่งกลับเวลาปัจจุบัน ใช้รูปแบบเดียวกับคำสั่ง time /t สร้างโดยคำสั่ง Cmd.exe
โดเมนผู้ใช้ ชื่อของโดเมนที่ผู้ใช้ปัจจุบันอยู่
ชื่อผู้ใช้ ชื่อผู้ใช้ปัจจุบัน
โปรไฟล์ผู้ใช้ เส้นทางไปยังโปรไฟล์ของผู้ใช้ปัจจุบัน
วินเดียร์ ไดเร็กทอรีที่ติดตั้ง Windows

ภายในไฟล์แบตช์ คุณสามารถทำงานกับสิ่งที่เรียกว่าตัวแปรสภาพแวดล้อม (หรือตัวแปรสภาพแวดล้อม) ซึ่งแต่ละไฟล์จะถูกเก็บไว้ใน RAM มีชื่อเฉพาะของตัวเอง และค่าของมันคือสตริง ตัวแปรสภาพแวดล้อมมาตรฐานจะเริ่มต้นโดยอัตโนมัติเมื่อระบบปฏิบัติการบู๊ต ตัวแปรดังกล่าว ได้แก่ WINDIR ซึ่งกำหนดตำแหน่งของไดเรกทอรี Windows TEMP ซึ่งกำหนดเส้นทางไปยังไดเรกทอรีสำหรับจัดเก็บไฟล์ Windows ชั่วคราว หรือ PATH ซึ่งจัดเก็บเส้นทางของระบบ (เส้นทางการค้นหา) นั่นคือ รายการไดเร็กทอรีที่ระบบควรค้นหาไฟล์ปฏิบัติการหรือไฟล์ที่แชร์ (เช่น ไลบรารีแบบไดนามิก) คุณยังสามารถประกาศตัวแปรสภาพแวดล้อมของคุณเองเป็นไฟล์แบตช์ได้โดยใช้คำสั่ง SET

รับค่าของตัวแปร

หากต้องการรับค่าของตัวแปรสภาพแวดล้อมเฉพาะ คุณต้องใส่ชื่อของตัวแปรนั้นด้วยอักขระ % ตัวอย่างเช่น:

@ECHO OFF CLS REM สร้างตัวแปร MyVar SET MyVar=Hello REM เปลี่ยนตัวแปร SET MyVar=%MyVar%! ค่าตัวแปร ECHO MyVar: %MyVar% REM การลบตัวแปร MyVar SET MyVar= ค่าตัวแปร ECHO WinDir: %WinDir%

เมื่อคุณเรียกใช้แบตช์ไฟล์ บรรทัดจะปรากฏบนหน้าจอ

ค่าตัวแปร MyVar: สวัสดี! ค่าตัวแปร WinDir: C:\WINDOWS

การแปลงตัวแปรเป็นสตริง

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

ชุด A=หนึ่งชุด B=สองชุด C=%A%%B%

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

SET A=หนึ่งชุด B=สอง ชุดC=A+B ตัวแปรECHO C=%C% SET D=%A%+%B% ตัวแปรECHO D=%D%

สองบรรทัดจะปรากฏบนหน้าจอ:

ตัวแปร C=A+B ตัวแปร D=หนึ่ง+สอง

ประการที่สอง คุณสามารถแยกสตริงย่อยออกจากตัวแปรสภาพแวดล้อมได้โดยใช้โครงสร้าง %ชื่อตัวแปร:~n1,n2%โดยที่ตัวเลข n1 กำหนดออฟเซ็ต (จำนวนอักขระที่จะข้าม) จากจุดเริ่มต้น (หาก n1 เป็นค่าบวก) หรือจากจุดสิ้นสุด (หาก n1 เป็นค่าลบ) ของตัวแปรสภาพแวดล้อมที่เกี่ยวข้อง และตัวเลข n2 คือจำนวนอักขระ ที่จะจัดสรร (หาก n2 เป็นบวก) หรือจำนวนอักขระตัวสุดท้ายในตัวแปรที่จะไม่ถูกรวมไว้ในสตริงย่อยที่เลือก (หาก n2 เป็นลบ) หากมีการระบุตัวเลือกลบ -n เพียงตัวเดียว อักขระ n ตัวสุดท้ายจะถูกแยกออกมา ตัวอย่างเช่น หากตัวแปร %DATE% เก็บสตริง "09/21/2007" (การแสดงเชิงสัญลักษณ์ของวันที่ปัจจุบันในการตั้งค่าภูมิภาคบางอย่าง) จากนั้นหลังจากดำเนินการคำสั่งต่อไปนี้

SET dd1=%DATE:~0.2% SET dd2=%DATE:~0.-8% SET mm=%DATE:~-7.2% SET yyyy=%DATE:~-4%

ตัวแปรใหม่จะมีค่าดังต่อไปนี้: %dd1%=21, %dd2%=21, %mm%=09, %ปปปป%=2007.

ประการที่สาม คุณสามารถดำเนินการขั้นตอนการเปลี่ยนสตริงย่อยได้โดยใช้โครงสร้าง %ตัวแปร_ชื่อ:s1=s2%(สิ่งนี้จะส่งคืนสตริงพร้อมกับสตริงย่อยทุกครั้ง s1 ในตัวแปรสภาพแวดล้อมที่เกี่ยวข้องแทนที่ด้วย s2 ) เช่น หลังจากดำเนินการตามคำสั่งแล้ว

SET a=123456 SET b=%a:23=99%

ตัวแปร b จะเก็บสตริง "199456" หากไม่ได้ระบุพารามิเตอร์ s2 สตริงย่อย s1 จะถูกลบออกจากสตริงเอาต์พุต กล่าวคือ หลังจากดำเนินการคำสั่ง

เซต ก=123456 เซต ข=%a:23=%

ตัวแปร b จะเก็บสตริง "1456"

การดำเนินการกับตัวแปรเช่นเดียวกับตัวเลข

เมื่อเปิดใช้งานการประมวลผลคำสั่งขั้นสูง (โหมดเริ่มต้นใน Windows XP) คุณสามารถถือว่าค่าตัวแปรสภาพแวดล้อมเป็นตัวเลขและทำการคำนวณทางคณิตศาสตร์ได้ เมื่อต้องการทำเช่นนี้ ใช้คำสั่ง SET กับสวิตช์ /A นี่คือตัวอย่างของไฟล์แบตช์ add.bat ที่เพิ่มตัวเลขสองตัวที่กำหนดเป็นพารามิเตอร์บรรทัดคำสั่ง และแสดงผลรวมผลลัพธ์บนหน้าจอ:

@ECHO OFF REM ตัวแปร M จะเก็บผลรวม SET /A M=%1+%2 ECHO ผลรวมของ %1 และ %2 เท่ากับ %M% REM ลบตัวแปร M SET M=

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

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

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

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

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

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

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

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

ชื่อ ข้อมูล

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

%NUMBER_OF_PROCESSORS%

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

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

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

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

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

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

%PROCESSOR_IDENTFIER%

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

%PROCESSOR_LEVEL%

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

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

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

ระบุตำแหน่งของไดเร็กทอรีระบบ OS

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

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

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

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

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

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

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

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

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

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

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

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

ตั้ง varname=new^&name

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

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

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

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

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

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