กลับไปหน้าบทความ

อ่าน 28 นาที

ตัวแปรสิ่งแวดล้อม

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

ตัวแปรสิ่งแวดล้อม

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

ฟังก์ชันนี้ได้รับการแนะนำในรูปแบบที่ทันสมัยในปี 1979 พร้อมกับUnix เวอร์ชัน 7ดังนั้นจึงถูกรวมอยู่ในระบบปฏิบัติการUnix ทุก เวอร์ชันและรุ่นนับจากนั้นเป็นต้นมา รวมถึงLinuxและmacOS ด้วย ตั้งแต่PC DOS 2.0 ในปี 1982 ระบบปฏิบัติการของ Microsoftที่ตามมาทั้งหมด รวมถึง Microsoft WindowsและOS/2ก็ได้รวมฟังก์ชันนี้ไว้เป็นคุณสมบัติเช่นกัน แม้ว่าจะมีไวยากรณ์ การใช้งาน และชื่อตัวแปรมาตรฐานที่แตกต่างกันบ้างก็ตาม

ออกแบบ

ใน ระบบ Unixและ ระบบ ที่คล้าย Unixรวมถึง Windows แต่ละกระบวนการจะมีชุดตัวแปร สภาพแวดล้อมแยกต่างหากของตัวเอง โดยค่าเริ่มต้น เมื่อสร้างกระบวนการใหม่ กระบวนการนั้นจะได้รับสภาพแวดล้อมการทำงานที่เหมือนกับกระบวนการแม่ ยกเว้นการเปลี่ยนแปลงที่กระบวนการแม่ทำขึ้นอย่างชัดเจนเมื่อสร้างกระบวนการลูก ใน ระดับ APIการเปลี่ยนแปลงเหล่านี้จะต้องทำระหว่างการทำงานแต่ละครั้งforkหรือexecอีกทางหนึ่ง จากเชลล์คำสั่งเช่นbashผู้ใช้สามารถเปลี่ยนตัวแปรสภาพแวดล้อมสำหรับการเรียกใช้คำสั่งเฉพาะได้โดยการเรียกใช้ทางอ้อมผ่านenvหรือใช้ENVIRONMENT_VARIABLE=VALUE <command>สัญลักษณ์ `--continue` โปรแกรมที่กำลังทำงานอยู่สามารถเข้าถึงค่าของตัวแปรสภาพแวดล้อมเพื่อวัตถุประสงค์ในการกำหนดค่าได้

สคริปต์เชลล์และไฟล์แบตช์ใช้ตัวแปรสภาพแวดล้อมในการสื่อสารข้อมูลและการตั้งค่าไปยังกระบวนการลูกนอกจากนี้ยังสามารถใช้เพื่อจัดเก็บค่าชั่วคราวเพื่อใช้อ้างอิงในภายหลังในสคริปต์เชลล์ได้ อย่างไรก็ตาม ในระบบ Unix นิยมใช้ ตัวแปรที่ไม่ส่งออก (non-exported variables)มากกว่า เนื่องจากจะไม่รั่วไหลออกนอกกระบวนการ

ในระบบ Unix การเปลี่ยนแปลงค่าตัวแปรสภาพแวดล้อมในสคริปต์หรือโปรแกรมที่คอมไพล์แล้ว จะมีผลเฉพาะกับกระบวนการนั้นและอาจรวมถึงกระบวนการลูกด้วย กระบวนการหลักและกระบวนการอื่นที่ไม่เกี่ยวข้องจะไม่ได้รับผลกระทบ ในทำนองเดียวกัน การเปลี่ยนแปลงหรือลบค่าตัวแปรภายใน ไฟล์แบตช์ ของ DOSหรือ Windows จะเปลี่ยนแปลงค่าตัวแปรนั้นตลอดระยะเวลาที่ไฟล์COMMAND.COMแบCMD.EXEตช์นั้นมีอยู่

ในระบบ Unix ตัวแปรสภาพแวดล้อมมักจะถูกกำหนดค่าเริ่มต้นระหว่างการเริ่มต้นระบบโดยสคริปต์เริ่มต้น ระบบ init และจะถูกส่งต่อไปยังกระบวนการอื่นๆ ทั้งหมดในระบบ ผู้ใช้สามารถ และมักจะ เพิ่มค่าให้กับตัวแปรเหล่านี้ในสคริปต์โปรไฟล์สำหรับเชลล์คำสั่งที่พวกเขากำลังใช้งาน ใน Microsoft Windows ค่าเริ่มต้นของตัวแปรสภาพแวดล้อมแต่ละตัวจะถูกเก็บไว้ในรีจิสทรีของ Windowsหรือตั้งค่าไว้ในไฟล์ AUTOEXEC.BAT

ในระบบ Unixโปรแกรมsetuidจะได้รับสภาพแวดล้อมที่ผู้เรียกเลือก แต่จะทำงานด้วยสิทธิ์ที่แตกต่างจากผู้เรียก ตัวเชื่อมโยงแบบไดนามิกมักจะโหลดโค้ดจากตำแหน่งที่ระบุโดยตัวแปรสภาพแวดล้อม$LD_LIBRARY_PATHและ$LD_PRELOADเรียกใช้ด้วยสิทธิ์ของกระบวนการ หากโปรแกรม setuid ทำเช่นนั้น จะไม่ปลอดภัย เพราะผู้เรียกสามารถสั่งให้เรียกใช้โค้ดตามอำเภอใจและใช้สิทธิ์ในทางที่ผิดได้ ด้วยเหตุนี้libcจึงยกเลิกการตั้งค่าตัวแปรสภาพแวดล้อมเหล่านี้เมื่อเริ่มต้นกระบวนการ setuid โปรแกรม setuid มักจะยกเลิกการตั้งค่าตัวแปรสภาพแวดล้อมที่ไม่รู้จักและตรวจสอบตัวแปรอื่นๆ หรือตั้งค่าเป็นค่าที่เหมาะสม

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

ไวยากรณ์

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

ตามธรรมเนียมแล้ว ชื่อของตัวแปรสภาพแวดล้อมมักจะเขียนด้วยตัวพิมพ์ใหญ่ทั้งหมด วิธีนี้ช่วยให้ตัวแปรสภาพแวดล้อมแตกต่างจากตัวแปรและตัวระบุอื่นๆ ที่ใช้ในโค้ดโปรแกรมได้อย่างชัดเจน อย่างไรก็ตาม โปรดทราบว่าการคำนึงถึงตัวพิมพ์ใหญ่และตัวพิมพ์เล็กในชื่อตัวแปรสภาพแวดล้อมนั้นแตกต่างกันไปตามระบบปฏิบัติการ กล่าวคือ ระบบปฏิบัติการแบบ Unix จะคำนึงถึงตัวพิมพ์ใหญ่และตัวพิมพ์เล็กในชื่อตัวแปรสภาพแวดล้อม ในขณะที่ DOS, OS/2 และ Windows ไม่คำนึงถึงตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก

ยูนิกซ์

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

หากต้องการแสดงไดเร็กทอรีโฮมของผู้ใช้ ผู้ใช้สามารถพิมพ์ได้ดังนี้:

echo $HOME

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

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

DOS, OS/2 และ Windows

ใน DOS, OS/2 และโปรแกรมแปลคำสั่งบรรทัดของ Windows เช่นCOMMAND.COMและCMD.EXEตัวแปรสภาพแวดล้อมจะถูกเรียกใช้โดยการใส่%เครื่องหมาย ก่อนและหลังตัวแปรนั้น

ในโปรแกรมแปลคำสั่งบรรทัดคำสั่งของ DOS, OS/2 และ Windows รวมถึงAPI ของระบบเหล่านั้น ชื่อตัวแปรสภาพแวดล้อมจะไม่แยกความแตกต่างระหว่างตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก

ตัวแปรสภาพแวดล้อมชื่อHOMEDRIVEประกอบด้วยตัวอักษรไดรฟ์ (รวมถึง:เครื่องหมายโคลอนต่อท้าย) ของไดเร็กทอรีโฮมของผู้ใช้ ในขณะที่HOMEPATHประกอบด้วยเส้นทางแบบเต็มของไดเร็กทอรีโฮมของผู้ใช้ภายในไดรฟ์นั้น

หากต้องการดูไดรฟ์โฮมและเส้นทาง ผู้ใช้สามารถพิมพ์ดังนี้:

ECHO %HOMEDRIVE%%HOMEPATH%

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

ในWindows PowerShellผู้ใช้สามารถพิมพ์คำสั่งต่อไปนี้ได้:

"$Env:HomeDrive$Env:HomePath"

หรือคำที่ซ้ำซ้อนอย่างใดอย่างหนึ่งต่อไปนี้:

Write-Output "$Env:HomeDrive$Env:HomePath" echo "$Env:HomeDrive$Env:HomePath" write "$Env:HomeDrive$Env:HomePath" return "$Env:HomeDrive$Env:HomePath" Write-Host "$Env:HomeDrive$Env:HomePath"

ใน PowerShell นั้น ชื่อตัวแปรสภาพแวดล้อมจะไม่แยกความแตกต่างระหว่างตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก

คำสั่งต่อไปนี้จะแสดงตัวแปรสภาพแวดล้อมทั้งหมดและค่าของตัวแปรเหล่านั้น:

รับรายการย่อยenv :

งานที่ได้รับมอบหมาย: ยูนิกซ์

คำสั่งenvเหล่านี้setสามารถใช้เพื่อตั้งค่าตัวแปรสภาพแวดล้อม และมักจะถูกรวมเข้าไว้ในเชลล์โดยตรง

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

ตัวแปร = ค่า # (ห้ามมีช่องว่างรอบเครื่องหมายเท่ากับ) ส่งออกตัวแปร # สำหรับBourneและเชลล์ที่เกี่ยวข้อง 
ส่งออกตัวแปร = ค่า # สำหรับksh , bashและเชลล์ที่เกี่ยวข้อง 
setenv VARIABLE value # สำหรับcshและเชลล์ที่เกี่ยวข้อง 

มีหลักการง่ายๆ ไม่กี่ข้อที่ควบคุมว่าตัวแปรทางสิ่งแวดล้อมส่งผลกระทบอย่างไร

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

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

ในเชลล์ Unix สามารถกำหนดค่าตัวแปรได้โดยไม่ต้องexportใช้คีย์เวิร์ด ตัวแปรที่กำหนดด้วยวิธีนี้จะแสดงผลโดยsetคำสั่ง แต่ไม่ใช่ตัวแปรสภาพแวดล้อมที่แท้จริง เนื่องจากตัวแปรเหล่านี้ถูกจัดเก็บโดยเชลล์เท่านั้นและไม่รู้จักโดยกระบวนการอื่นๆprintenvคำสั่งจะไม่แสดงตัวแปรเหล่านี้ และกระบวนการลูกจะไม่ได้รับสืบทอดตัวแปรเหล่านี้

ตัวแปร = ค่า

ไวยากรณ์คำนำหน้าจะส่งออกตัวแปรสภาพแวดล้อม "จริง" ไปยังกระบวนการลูกโดยไม่ส่งผลกระทบต่อกระบวนการปัจจุบัน: [ 1 ]

ตัวแปร = ค่าชื่อโปรแกรม [อาร์กิวเมนต์] 

การคงอยู่ของตัวแปรสภาพแวดล้อมสามารถเป็นได้ทั้งในระดับเซสชันหรือระดับระบบ

unsetเป็นคำสั่งในตัวที่ใช้งานโดยทั้ง ตระกูล เชลล์ Bourne ( sh, ksh, bash, เป็นต้น) และ ตระกูล เชลล์ C (csh, tcsh เป็นต้น) ของเชลล์บรรทัดคำสั่ง Unix คำสั่งนี้จะยกเลิกการตั้งค่าตัวแปรเชลล์ ลบออกจากหน่วยความจำและสภาพแวดล้อมที่ส่งออกของเชลล์ คำสั่งนี้ถูกใช้งานเป็นคำสั่งในตัวของเชลล์เนื่องจากมันจัดการส่วนภายในของเชลล์โดยตรง[ 2 ] [ 3 ]ตัวแปรเชลล์แบบอ่านอย่างเดียวไม่สามารถยกเลิกการตั้งค่าได้ หากพยายามยกเลิกการตั้งค่าตัวแปรแบบอ่านอย่างเดียวunsetคำสั่งจะพิมพ์ข้อความแสดงข้อผิดพลาดและส่งคืนรหัสออกที่ไม่ใช่ศูนย์

Assignment: DOS, OS/2 and Windows

In DOS, OS/2 and Windows command-line interpreters such as COMMAND.COM and CMD.EXE, the SET command is used to assign environment variables and values using the following arguments:

SETVARIABLE=value 

An environment variable is removed via:

SETVARIABLE=

The SET command without any arguments displays all environment variables along with their values; SET " ", zero or more spaces, will include internal variables too. In CMD.EXE, it is possible to assign local variables that will not be global using the SETLOCAL command and ENDLOCAL to restore the environment.

Use the switch/? to display the internal documentation, or use the viewerhelp:

SET/? HELP SET SETLOCAL /? HELP SETLOCAL 

In PowerShell, the assignment follows a syntax similar to Unix:

$env:VARIABLE="VALUE"

Assignment: PHP

In PHP the putenv() function should be used.[4][5]

putenv("VARIABLE_NAME"="VALUE");

Examples

Examples of environment variables include:

  • PATH: a list of directory paths. When the user types a command without providing the full path, this list is checked to see whether it contains a path that leads to the command.
  • HOME (Unix-like) and USERPROFILE (Microsoft Windows): indicate where a user's home directory is located in the file system.
  • HOME/{.AppName} (Unix-like) and APPDATA\{DeveloperName\AppName} (Microsoft Windows): for storing application settings. Many applications incorrectly use USERPROFILE for application settings in Windows: USERPROFILE should only be used in dialogs that allow user to choose between paths like Documents/Pictures/Downloads/Music; for programmatic purposes, APPDATA (for roaming application settings shared across multiple devices), LOCALAPPDATA (for local application settings) or PROGRAMDATA (for application settings shared between multiple OS users) should be used.[6]
  • TERM (Unix-like): specifies the type of computer terminal or terminal emulator being used (e.g., vt100 or dumb).
  • PS1 (Unix-like): specifies how the prompt is displayed in the Bourne shell and variants.
  • MAIL (Unix-like): used to indicate where a user's mail is to be found.
  • TEMP: location where processes can store temporary files.

True environment variables

Unix

$PATH
ประกอบด้วยรายการไดเร็กทอรีที่คั่นด้วยเครื่องหมายโคลอน ซึ่งเชลล์จะใช้ค้นหาคำสั่งที่ไม่มีเครื่องหมายทับในชื่อ (คำสั่งที่มีเครื่องหมายทับจะถูกตีความว่าเป็นชื่อไฟล์ที่จะเรียกใช้งาน และเชลล์จะพยายามเรียกใช้ไฟล์เหล่านั้นโดยตรง) เทียบเท่ากับตัวแปรใน DOS , OS/2และWindows%PATH%
$HOME
ตัวแปรสภาพแวดล้อมนี้ ระบุตำแหน่งของไดเร็กทอรีโฮม ของผู้ใช้ แม้ว่าเราจะสามารถค้นหาไดเร็กทอรีโฮมของผู้ใช้ปัจจุบันได้ผ่านฟังก์ชัน C getpwuidและ `get_home_directory` getuidแต่$HOMEตัวแปรสภาพแวดล้อมนี้มักใช้เพื่อความสะดวกในสคริปต์เชลล์ต่างๆ (และบริบทอื่นๆ) การใช้ตัวแปรสภาพแวดล้อมนี้ยังช่วยให้ผู้ใช้สามารถชี้ไปยังไดเร็กทอรีอื่นได้อีกด้วย
$PWD
ตัวแปรนี้ชี้ไปยังไดเร็กทอรีปัจจุบัน เทียบเท่ากับผลลัพธ์ของคำสั่ง pwd เมื่อเรียกใช้โดยไม่มีอาร์กิวเมนต์
$DISPLAY
ประกอบด้วยตัวระบุสำหรับจอแสดงผลที่ โปรแกรม X11ควรใช้เป็นค่าเริ่มต้น
$LD_LIBRARY_PATH
ในระบบ Unix หลายระบบที่มีตัวเชื่อมโยงแบบไดนามิก ไฟล์ `.txt`จะมีรายการไดเร็กทอรีที่คั่นด้วยเครื่องหมายโคลอน ซึ่งตัวเชื่อมโยงแบบไดนามิกควรค้นหาอ็อบเจ็กต์ที่ใช้ร่วมกันเมื่อสร้างอิมเมจกระบวนการหลังจากexec`.txt` ก่อนที่จะค้นหาในไดเร็กทอรีอื่นๆ
$LIBPATHหรือ$SHLIB_PATH
ทางเลือกอื่นนอกเหนือจากที่$LD_LIBRARY_PATHใช้กันทั่วไปใน Unix เวอร์ชันเก่า
$LANG, $LC_ALL, $LC_...
$LANGใช้สำหรับตั้งค่าภาษาท้องถิ่น เริ่มต้น ตัวอย่างเช่น หากค่าภาษาท้องถิ่นเป็นpt_BRภาษาจะถูกตั้งค่าเป็นภาษาโปรตุเกส (บราซิล) และจะใช้ภาษาโปรตุเกสแบบบราซิลในกรณีที่เกี่ยวข้อง ลักษณะต่างๆ ของการแปลภาษาจะถูกควบคุมโดย$LC_ตัวแปรแต่ละตัว ( $LC_CTYPE, , เป็นต้น) สามารถใช้เพื่อบังคับใช้ภาษาท้องถิ่นเดียวกันสำหรับทุกด้าน$LC_COLLATE$LC_DATE$LC_ALL
$TZ
หมายถึงเขตเวลาสามารถอยู่ในรูปแบบต่างๆ ได้ ทั้งการระบุเขตเวลาโดยตรง หรือการอ้างอิงไฟล์ (ในรูปแบบ/usr/share/zoneinfo)
$BROWSER
ประกอบด้วยรายการ การตั้งค่า เว็บเบราว์เซอร์ ของผู้ใช้ที่คั่นด้วยเครื่องหมายโคลอน สำหรับใช้โดยโปรแกรมที่ต้องการอนุญาตให้ผู้ใช้ดูเนื้อหาที่URLเบราว์เซอร์ในรายการจะถูกลองใช้จากเบราว์เซอร์แรกไปจนถึงเบราว์เซอร์สุดท้าย โดยจะหยุดหลังจากเบราว์เซอร์แรกที่ใช้งานได้สำเร็จ การจัดเรียงนี้ช่วยให้มีพฤติกรรมสำรองในสภาพแวดล้อมที่แตกต่างกัน เช่น ใน สภาพแวดล้อม X11 สามารถใช้ เบราว์เซอร์แบบกราฟิก (เช่นFirefox ) ได้ แต่ในสภาพแวดล้อมคอนโซล สามารถใช้เบราว์เซอร์แบบเทอร์มินัล (เช่นLynx%s ) ได้ อาจมีโทเค็นเพื่อระบุตำแหน่งที่จะวาง URL มิฉะนั้นควรเปิดเบราว์เซอร์โดยใช้ URL เป็นอาร์กิวเมนต์แรก[ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ]

ดีเอส

ภายใต้ DOS สภาพแวดล้อมหลักจะถูกจัดเตรียมโดยตัวประมวลผลคำสั่งหลัก ซึ่งสืบทอดสภาพแวดล้อมก่อนหน้าที่กำหนดไว้CONFIG.SYSเมื่อโหลดครั้งแรก ขนาดของมันสามารถกำหนดค่าได้ผ่านCOMMAND /E:nพารามิเตอร์ระหว่าง 160 [ 12 ]และ 32767 [ 12 ]ไบต์ ส่วนของ สภาพแวดล้อมภายในที่สืบทอดไปยังกระบวนการลูกมักจะลดขนาดลงตามขนาดของเนื้อหาที่พวกมันเก็บไว้ ตัวประมวลผลบรรทัดคำสั่งบางตัว (เช่น4DOS ) อนุญาตให้กำหนดพื้นที่ว่างขั้นต่ำของสภาพแวดล้อมที่จะมีให้เมื่อเรียกใช้เชลล์รอง[ 12 ]ในขณะที่เนื้อหาของตัวแปรสภาพแวดล้อมยังคงไม่เปลี่ยนแปลงเมื่อจัดเก็บ ชื่อของตัวแปรเหล่านั้น (โดยไม่มี " %) จะถูกแปลงเป็นตัวพิมพ์ใหญ่เสมอ ยกเว้นตัวแปรสภาพแวดล้อมก่อนหน้าที่กำหนดผ่านCONFIG.SYSคำสั่งภายSETใต้DR DOS 6.0และสูงกว่า[ 13 ] [ 14 ] (และเฉพาะกับSWITCHES=/L(สำหรับ "อนุญาตชื่อตัวพิมพ์เล็ก") ภายใต้DR-DOS 7.02และสูงกว่า) [ 12 ] [ 15 ]โดยหลักการแล้วMS-DOS 7.0และเวอร์ชันที่สูงกว่ายังรองรับชื่อตัวแปรตัวพิมพ์เล็ก ( %windir%) แต่ไม่มีวิธีการให้ผู้ใช้กำหนดชื่อตัวแปรเหล่านั้น ชื่อตัวแปรสภาพแวดล้อมที่มีตัวอักษรพิมพ์เล็กจะถูกจัดเก็บไว้ในสภาพแวดล้อมเช่นเดียวกับตัวแปรสภาพแวดล้อมปกติ แต่ยังคงมองไม่เห็นสำหรับซอฟต์แวร์ DOS ส่วนใหญ่ เนื่องจากซอฟต์แวร์เหล่านั้นถูกเขียนขึ้นโดยคาดหวังเฉพาะตัวแปรตัวพิมพ์ใหญ่เท่านั้น[ 12 ] [ 13 ] [ 14 ]โปรแกรมประมวลผลคำสั่งบางโปรแกรมจำกัดความยาวสูงสุดของชื่อตัวแปรไว้ที่ 80 ตัวอักษร[ 12 ]แม้ว่าโดยหลักแล้วจะถูกจำกัดด้วยขนาดของเซ็กเมนต์สภาพแวดล้อม เท่านั้น แต่โปรแกรม DOS และ Windows 16 บิตบางโปรแกรม[ 12 ] [ nb 1 ]ไม่คาดหวังว่าเนื้อหาของตัวแปรสภาพแวดล้อมจะเกิน 128 ตัวอักษร DR-DOS COMMAND.COMรองรับตัวแปรสภาพแวดล้อมได้ถึง 255 ตัวอักษร และ4DOS รองรับได้ ถึง 512 ตัวอักษร[ 12 ]เนื่องจากCOMMAND.COMสามารถกำหนดค่าได้ (ผ่าน )/L:128..1024เพื่อรองรับบรรทัดคำสั่งที่มีอักขระได้ถึง 1024 ตัวภายใน MS-DOS 7.0 และเวอร์ชันที่สูงกว่า ตัวแปรสภาพแวดล้อมจึงควรมีอักขระอย่างน้อย 1024 ตัวเช่นกัน ใน DR-DOS บางเวอร์ชัน สภาพแวดล้อมที่ส่งไปยังไดรเวอร์ ซึ่งมักไม่ต้องการสภาพแวดล้อมหลังจากการติดตั้ง สามารถลดขนาดหรือย้ายตำแหน่งได้ผ่านตัวเลือกSETENV/ INSTALL[HIGH]( สภาพแวดล้อมเป็นศูนย์) (แทนที่ไดรฟ์ เช่น) และ(ย้ายสภาพแวดล้อมเหนือโปรแกรม) เพื่อลดขนาดหน่วยความจำ ที่ไดรเวอร์ใช้ให้น้อย ที่สุด[ 16 ] [ 15 ] [ 13 ] [ 17 ] [ 18 ] [ 19 ]LOADHIGH/Z/D[:loaddrive]B:TSR.COM/E

ในโหมดแบทช์ ตัวแปรสภาพแวดล้อมที่ไม่มีอยู่จะถูกแทนที่ด้วยสตริงที่มีความยาวเป็นศูนย์

ตัวแปรสภาพแวดล้อมมาตรฐานหรือตัวแปรสภาพแวดล้อมที่สงวนไว้ได้แก่:

%APPEND%(รองรับตั้งแต่ DOS 3.3)
ตัวแปรนี้ประกอบด้วยรายการไดเร็กทอรีที่คั่นด้วยเครื่องหมายเซมิโคลอน ซึ่งใช้สำหรับค้นหาไฟล์ โดยปกติจะเปลี่ยนแปลงผ่านAPPEND /Eคำสั่ง ซึ่งจะทำให้แน่ใจได้ว่าชื่อไดเร็กทอรีจะถูกแปลงเป็นตัวพิมพ์ใหญ่ด้วย ซอฟต์แวร์ DOS บางตัวคาดหวังว่าชื่อจะถูกจัดเก็บในรูปแบบตัวพิมพ์ใหญ่ และความยาวของรายการไม่ควรเกิน 121 [ 12 ]ตัวอักษร ดังนั้นจึงไม่ควรแก้ไขตัวแปรผ่านSETคำสั่งชื่อไฟล์ยาวที่มีช่องว่างหรืออักขระพิเศษอื่นๆ ไม่ควรใส่เครื่องหมายอัญประกาศ ( ")
%CONFIG%(รองรับตั้งแต่MS-DOS 6.0และPC DOS 6.1และยังรองรับโดยROM-DOS [ 20 ] )
ตัวแปรนี้เก็บชื่อเชิงสัญลักษณ์ของการกำหนดค่าการบูตที่เลือกในปัจจุบัน โดยจะถูกกำหนดโดยBIOS ของ DOS ( IO.SYSเช่น , IBMBIO.COM, เป็นต้น) ให้เป็นชื่อที่กำหนดโดยCONFIG.SYSคำสั่ง ที่เกี่ยวข้อง MENUITEMก่อนที่จะเริ่มตัวประมวลผลคำสั่งหลัก จุดประสงค์หลักคือเพื่อให้สามารถจัดการกรณีพิเศษเพิ่มเติมใน และงานแบต ช์AUTOEXEC.BATที่คล้ายกันได้ ขึ้นอยู่กับตัวเลือกที่เลือกในระหว่างการบูต สามารถจำลองสิ่งนี้ได้ใน DR-DOS โดยใช้CONFIG.SYSคำสั่งSETเช่นSET CONFIG=1
%CMDLINE%(เปิดตัวพร้อมกับ4DOSและรองรับตั้งแต่MS-DOS 7.0 เป็นต้นมา )
ตัวแปรนี้ประกอบด้วยข้อความที่ขยายอย่างสมบูรณ์ของบรรทัดคำสั่งที่กำลังทำงานอยู่ แอปพลิเคชันสามารถอ่านตัวแปรนี้เพื่อตรวจจับการใช้งานและดึงบรรทัดคำสั่งที่ยาวได้ เนื่องจากวิธีการดั้งเดิมในการดึงอาร์กิวเมนต์บรรทัดคำสั่งผ่านPSP (หรือ ฟังก์ชัน API ที่เกี่ยวข้อง ) นั้นจำกัดอยู่ที่ 126 อักขระ และไม่สามารถใช้งานได้อีกต่อไปเมื่อFCBถูกขยายหรือใช้DTACOMMAND.COM เริ่มต้น แม้ว่า 4DOS จะรองรับบรรทัดคำสั่งที่ยาวกว่า แต่ โดยค่าเริ่มต้นยังคงรองรับได้สูงสุดเพียง 126 อักขระที่พรอมต์ (เว้นแต่จะถูกแทนที่ด้วย/U:128..255การระบุขนาดของบัฟเฟอร์บรรทัดคำสั่ง) แต่ถึงกระนั้น บรรทัดคำสั่งภายในก็สามารถยาวขึ้นได้ผ่านการขยายตัวแปร fe (ขึ้นอยู่กับ/L:128..1024การระบุขนาดของบัฟเฟอร์ภายใน) นอกเหนือจากไบต์ความยาวบรรทัดคำสั่งใน PSP แล้ว บรรทัดคำสั่ง PSP มักจะถูกจำกัดด้วยASCII-13และบรรทัดคำสั่งที่ยาวกว่า 126 อักขระมักจะถูกตัดทอนโดยการแทรก ASCII-13 ที่ตำแหน่ง 127 [ 14 ]แต่ไม่สามารถพึ่งพาได้ในทุกสถานการณ์[ 14 ] [ nb 2 ]ตัวแปรจะถูกระงับสำหรับคำสั่งภายนอกที่เรียกใช้โดยมีสัญลักษณ์@- นำหน้า เช่น@XCOPY ...เพื่อความเข้ากันได้กับเวอร์ชันก่อนหน้า และเพื่อลดขนาดของสภาพแวดล้อมเมื่อโหลดโปรแกรมที่ไม่ย้ายตำแหน่งและสิ้นสุดการทำงานแบบคงอยู่Windows Chicagoเวอร์ชันเบต้าบางเวอร์ชันเคย%CMDLINE%จัดเก็บเฉพาะส่วนที่เหลือของบรรทัดคำสั่งที่เกิน 126 ตัวอักษร แทนที่จะเป็นบรรทัดคำสั่งทั้งหมด[ 13 ] [ 14 ]
%COMSPEC%(รองรับตั้งแต่ DOS 2.0)
ตัวแปรนี้ประกอบด้วยพาธแบบเต็ม8.3ไปยังตัวประมวลผลคำสั่งโดยทั่วไปคือหรือต้องไม่มีชื่อไฟล์ที่ยาวแต่ภายใต้ DR-DOS อาจมีรหัสผ่านไฟล์และ ไดเร็กทอรี ตัวประมวลผลคำสั่งหลักจะตั้งค่าให้ชี้ไปยังตัวเอง (โดยทั่วไปจะสะท้อนการตั้งค่าของคำสั่ง) เพื่อให้ส่วนที่คงอยู่ของตัวประมวลผลคำสั่งสามารถโหลดส่วนชั่วคราวจากดิสก์ได้หลังจากดำเนินการโปรแกรมขนาดใหญ่เสร็จสิ้น ค่าของตัวแปรสามารถเปลี่ยนแปลงได้ในขณะทำงานเพื่อสะท้อนการเปลี่ยนแปลงในการกำหนดค่า ซึ่งจะทำให้ตัวประมวลผลคำสั่งต้องโหลดตัวเองจากตำแหน่งอื่น ตัวแปรนี้ยังใช้เมื่อเรียกใช้เชลล์รองด้วยC:\COMMAND.COMC:\DOS\COMMAND.COMCONFIG.SYSSHELL
%COPYCMD%(รองรับตั้งแต่MS-DOS 6.2และPC DOS 6.3และยังรองรับโดยROM-DOS [ 20 ] )
อนุญาตให้ผู้ใช้ระบุ/Yสวิตช์ (เพื่อถือว่า "ใช่" ในการสอบถาม) เป็นค่าเริ่มต้นสำหรับ คำสั่ง COPY, XCOPY, และMOVEค่าเริ่มต้น/Yสามารถเปลี่ยนแปลงได้โดยการระบุ/-Yสวิตช์ในบรรทัดคำสั่ง/Yสวิตช์นี้จะสั่งให้คำสั่งแทนที่ไฟล์ที่มีอยู่โดยไม่ต้องขอการยืนยัน
%DIRCMD%(รองรับตั้งแต่MS-DOS 5.0และPC DOS 5.0รวมถึงรองรับโดยROM-DOS [ 20 ] )
อนุญาตให้ผู้ใช้ระบุพารามิเตอร์เริ่มต้นที่กำหนดเองสำหรับDIRคำสั่ง รวมถึงข้อกำหนดไฟล์ สวิตช์เริ่มต้นที่ตั้งไว้ล่วงหน้าสามารถถูกแทนที่ได้โดยการระบุสวิตช์เชิงลบในบรรทัดคำสั่ง ตัวอย่างเช่น หาก%DIRCMD%มี/Wสวิตช์อยู่ ก็สามารถแทนที่ได้โดยใช้DIR /-Wที่บรรทัดคำสั่ง ซึ่งคล้ายกับตัวแปรสภาพแวดล้อม%$DIR%ภายใต้DOS Plus [ 21 ]และสิ่งอำนวยความสะดวกในการกำหนดสวิตช์เริ่มต้นสำหรับDIRผ่าน สวิตช์ /Cหรือ/Rภายใต้DR-DOSCOMMAND.COM [ 13 ] ยัง%DIRCMD%ได้รับการสนับสนุนโดยคำสั่งภายนอกSDIR.COM/ DIR.COMStackerภายใต้Novell DOS 7และสูงกว่า[ 13 ]
%LANG%(รองรับตั้งแต่MS-DOS 7.0 )
ตัวแปรนี้ได้รับการสนับสนุนโดยเครื่องมือบางอย่างเพื่อสลับภาษาสำหรับข้อความในประเด็นที่มีหลายภาษา
%LANGSPEC%(รองรับตั้งแต่MS-DOS 7.0 )
ตัวแปรนี้ได้รับการสนับสนุนโดยเครื่องมือบางอย่างเพื่อสลับภาษาสำหรับข้อความในประเด็นที่มีหลายภาษา
%NO_SEP%(รองรับตั้งแต่PC DOS 6.3และDR-DOS 7.07 )
ตัวแปรนี้ควบคุมการแสดงตัวคั่นหลักพันในข้อความของคำสั่งต่างๆ โดยค่าเริ่มต้นจะแสดงตัวคั่นหลักพัน แต่สามารถระงับได้โดยการระบุSET NO_SEP=ONหรือSET NO_SEP=1ภายใต้ PC DOS นอกจากนี้ DR-DOS ยังอนุญาตให้แทนที่ตัวคั่นหลักพันของระบบที่แสดงดังเช่นในSET NO_SEP=.fe [ 12 ]
%PATH%(รองรับตั้งแต่ DOS 2.0)
ตัวแปรนี้ประกอบด้วยรายการไดเร็กทอรีที่คั่นด้วยเครื่องหมายเซมิโคลอน ซึ่งตัวแปลคำสั่งจะค้นหาไฟล์ที่สามารถเรียกใช้งานได้เทียบเท่ากับตัวแปร Unix $PATH(แต่แอปพลิเคชัน DOS และ Windows บางตัวก็ใช้รายการนี้เพื่อค้นหาไฟล์ข้อมูลในลักษณะเดียวกับ$LD_LIBRARY_PATHในระบบที่คล้าย Unix) โดยปกติจะเปลี่ยนผ่าน คำสั่ง PATH(หรือPATH /EในMS-DOS 6.0 ) ซึ่งจะทำให้แน่ใจได้ว่าชื่อไดเร็กทอรีจะถูกแปลงเป็นตัวพิมพ์ใหญ่ ซอฟต์แวร์ DOS บางตัวคาดหวังว่าชื่อจะถูกจัดเก็บเป็นตัวพิมพ์ใหญ่และความยาวของรายการไม่ควรเกิน 123 [ 12 ]ตัวอักษร[ nb 1 ]ดังนั้นจึงไม่ควรแก้ไขตัวแปรผ่านSETคำสั่ง[ 12 ]ชื่อไฟล์ยาวที่มีช่องว่างหรืออักขระพิเศษอื่นๆ จะต้องไม่ใส่เครื่องหมายอัญประกาศ ( ") โดยค่าเริ่มต้น จะค้นหาไดเร็กทอรีปัจจุบันก่อน แต่โปรเซสเซอร์บรรทัดคำสั่งบางตัวเช่น4DOSอนุญาต.ให้รวม " " (สำหรับ "ไดเร็กทอรีปัจจุบัน") ในรายการด้วยเพื่อแทนที่ลำดับการค้นหานี้ โปรแกรม DOS บางโปรแกรมไม่เข้ากันกับส่วนขยายนี้[ 12 ]
%PROMPT%(รองรับตั้งแต่ DOS 2.0)
ตัวแปรนี้ประกอบด้วย$สตริงที่ถูกแยกเป็นโทเค็น ซึ่งกำหนดลักษณะการแสดงผลของข้อความแจ้งเตือนโดยปกติจะเปลี่ยนค่าผ่านPROMPTคำสั่ง
%TEMP%(และ%TMP%)
ตัวแปรเหล่านี้มีเส้นทางไปยังไดเร็กทอรีที่ควรจัดเก็บไฟล์ชั่วคราว%TEMP% โดยปกติแล้วเครื่องมือของระบบปฏิบัติการจะใช้เพียง ในขณะที่โปรแกรมจากผู้พัฒนาภายนอกจะใช้ ด้วย%TMP%โดยทั่วไปแล้ว%TEMP%จะมีลำดับความสำคัญเหนือ%TMP%กว่า

ตระกูลDR-DOS รองรับ ตัวแปรสภาพแวดล้อมมาตรฐานเพิ่มเติมอีกหลายตัวได้แก่:

%BETA%
ตัวแปรนี้มีข้อความเสริมที่แสดงโดยบางเวอร์ชัน (รวมถึงDR DOS 3.41 ) เมื่อCOMMAND.COMเริ่มต้นเชลล์รอง[ 22 ]
%DRDOSCFG%/ %NWDOSCFG%/%OPENDOSCFG%
ตัวแปรนี้ประกอบด้วยไดเร็กทอรี[ 23 ] (โดยไม่มีเครื่องหมาย " \" ต่อท้าย) ที่จะค้นหา ไฟล์การกำหนด .INIค่า.CFG(นั่นคือไฟล์เฉพาะแอปพลิเคชัน DR-DOS เช่นTASKMGR.INI, TASKMAX.INI, VIEWMAX.INI, FASTBACK.CFGเป็นต้น ไฟล์เฉพาะคลาส เช่นCOLORS.INIหรือไฟล์ส่วนกลาง เช่นDRDOS.INI, NWDOS.INI, ,OPENDOS.INIหรือDOS.INI) ตามที่ใช้โดย คำสั่ง INSTALLและSETUPและโปรแกรม DR-DOS ต่างๆ เช่นDISKOPT, DOSBOOK, EDIT, FBX, FILELINK, LOCK, SECURITY.OVL/ NWLOGIN.EXE, SERNO, TASKMAX, TASKMGR, VIEWMAX, หรือ[ 13UNDELETE ] จะต้องไม่มีชื่อไฟล์ที่ยาวเกินไป
%DRCOMSPEC%
ตัวแปรนี้สามารถเก็บเส้นทางทางเลือกไปยังตัวประมวลผลคำสั่งได้ โดยจะมีความสำคัญเหนือกว่าเส้นทางที่กำหนดไว้ใน%COMSPEC%ตัวแปร และอาจรวมถึง รหัส ผ่านไฟล์และไดเร็กทอรีด้วย หรืออีกทางหนึ่ง ตัวแปรนี้สามารถเก็บค่าพิเศษ " ON" หรือ " 1" เพื่อบังคับให้ใช้%COMSPEC%ตัวแปรนี้แม้ในสถานการณ์ที่%COMSPEC%ตัวแปรอาจชี้ไปยังตัวประมวลผลบรรทัดคำสั่งที่ไม่ถูกต้อง เช่น เมื่อเรียกใช้SYSคำสั่ง DR-DOS บางเวอร์ชันภายใต้ระบบปฏิบัติการอื่น[ 24 ]
%DRSYS%
การตั้งค่าตัวแปรนี้เป็น " ON" หรือ " 1" จะบังคับให้คำสั่ง DR-DOS บางเวอร์ชันSYSทำงานภายใต้ระบบปฏิบัติการอื่นแทนที่จะแสดงคำเตือน[ 24 ]
%FBP_USER%
ระบุชื่อผู้ใช้ที่ใช้โดยคำสั่งFastBackFBXและไฟล์การกำหนดค่าภายใต้Novell DOS 7 [ 13 ]{user}.FB
%HOMEDIR%
ตัวแปรนี้อาจมีไดเร็กทอรีโฮมภายใต้ DR-DOS (รวมถึงDR DOS 5.0และ6.0 ) [ 13 ] [ 22 ]
%INFO%
ใน DR-DOS บางเวอร์ชันCOMMAND.COMตัวแปรนี้จะกำหนดสตริงที่แสดงโดย$Iโทเค็นของPROMPTคำสั่ง[ 22 ]ตัวอย่างเช่น สามารถใช้เพื่อแจ้งให้ผู้ใช้ทราบถึงวิธีการออกจากเชลล์รองได้
%LOGINNAME%
ใน DR-DOS บางเวอร์ชันCOMMAND.COMตัวแปรนี้กำหนดชื่อผู้ใช้ที่แสดงโดย$Uโทเค็นของPROMPTคำสั่ง ตามที่ตั้งค่าโดยสคริปต์การเข้าสู่ระบบ fe สำหรับNovell NetWare [ 12 ] [ 13 ] [ 22 ] ดูตัวแปรเสมือนที่มีชื่อคล้ายกัน%LOGIN_NAME%ด้วย
%MDOS_EXEC%
ตัวแปรนี้สามารถรับค่า " ON" หรือ " OFF" ภายใต้Multiuser DOSได้ หากเปิดใช้งาน ระบบปฏิบัติการจะอนุญาตให้แอปพลิเคชันเรียกใช้เชลล์รองโดยที่DOS Program Area (DPA) ว่าง เพื่อให้มีหน่วยความจำ DOS สูงสุดสำหรับแอปพลิเคชันรองแทนที่จะเรียกใช้ในโดเมนเดียวกันกับภายใต้ DOS [ 25 ] [ 26 ]
%NOCHAR%
ตัวแปรนี้สามารถใช้เพื่อกำหนดอักขระที่แสดงโดยคำสั่งบางคำสั่งในข้อความสำหรับ "ไม่" ใน[Y,N]การสอบถาม ซึ่งจะแทนที่ค่าเริ่มต้นของระบบปัจจุบัน (โดยทั่วไปคือ " N" ในเวอร์ชันภาษาอังกฤษของ DR-DOS) หากมีสตริง จะใช้เฉพาะอักขระตัวแรกที่เป็นตัวพิมพ์ใหญ่เท่านั้น คำสั่งบางคำสั่งยังรองรับพารามิเตอร์บรรทัดคำสั่ง เพื่อถือว่า "ใช่" ในการสอบถามโดยอัตโนมัติ ซึ่งจะระงับข้อความแจ้งเตือนดังกล่าว อย่างไรก็ตาม หาก ใช้/Yพารามิเตอร์ เพื่อระบุอักขระ "ใช่"/"ไม่" (ซึ่งจะแทนที่การตั้งค่าใดๆ) การสอบถามจะไม่ถูกระงับ ดู คำสั่ง ที่เกี่ยวข้อง และตัวแปรสภาพแวดล้อมด้วย[ 24 ]/Y:yn%NOCHAR%CONFIG.SYSNOCHAR%YESCHAR%
%NOSOUND%
การตั้งค่าตัวแปรนี้เป็น " ON" หรือ " 1" จะปิดใช้งานเสียงบี๊บเริ่มต้นที่ส่งโดยคำสั่ง DR-DOS บางคำสั่งในบางสถานการณ์ เช่น เพื่อแจ้งให้ผู้ใช้ทราบว่าการดำเนินการบางอย่างเสร็จสมบูรณ์แล้ว ต้องการการโต้ตอบจากผู้ใช้ หรือเมื่อกดปุ่มผิด ตัวเลือกบรรทัดคำสั่งเพื่อเปิดใช้งานเสียงบี๊บเฉพาะบางอย่างจะแทนที่การตั้งค่านี้
%OS%
ตัวแปรนี้ประกอบด้วยชื่อของระบบปฏิบัติการ เพื่อใช้แยกแยะระบบปฏิบัติการที่เกี่ยวข้องกับ DOS ต่างๆ ของDigital Researchในงานประมวลผลแบบแบตช์และแอปพลิเคชัน ต่างๆ [ 23 ]ค่าที่รู้จัก ได้แก่ " DOSPLUS" ( DOS Plus 1.2ในการจำลอง DOS), " CPCDOS 4.1" (DOS Plus 1.2 ใน การจำลอง CP/M ), " DRDOS" ( DR DOS 3.31 - 6.0 , DR DOS Panther , DR DOS StarTrek , DR-DOS 7.02 [ 23 ] - 7.05 ), " EZDOS" ( EZ-DOS 3.41 ), " PALMDOS" และ " NetWare PalmDOS" ( PalmDOS 1.0 ), " NWDOS" ( Novell DOS 7 ), " NWDOS7" (Novell DOS 7 Beta), " OPENDOS" ( Caldera OpenDOS 7.01 , Caldera DR-OpenDOS 7.02 ), " CDOS" ( DOS พร้อมกัน , DOS XM พร้อมกัน ), " CPCDOS" ( PC DOS พร้อมกัน ), " CDOS386" ( DOS 386 พร้อมกัน ), " DRMDOS" ( DOS ผู้ใช้หลายคน ), " MDOS" ( CCI ผู้ใช้หลายคน DOS ), [ 25 ] " IMSMDOS" ( IMS Multiuser DOS ), " REAL32" ( REAL/32 ) [ 13 ] [ 27 ] MS-DOS INTERSVRมองหาค่า " DRDOS" เช่นกัน[ 27 ]ดูตัวแปรสภาพแวดล้อมที่มีชื่อเดียวกัน ซึ่งถูกนำมาใช้ใน ตระกูล Windows NT%OS%ในภายหลังด้วย
%PEXEC%
ใน DR-DOS บางเวอร์ชัน ตัวแปรนี้จะกำหนดคำสั่งที่ดำเนินการโดย$Xโทเค็นของPROMPTคำสั่งก่อนCOMMAND.COMที่จะแสดงข้อความแจ้งเตือนหลังจากกลับจากการเรียกใช้โปรแกรมภายนอก[ 13 ] [ 23 ]
%SWITCHAR%
ตัวแปรนี้กำหนดค่า SwitCharที่จะใช้สำหรับการแยกวิเคราะห์อาร์กิวเมนต์โดยคำสั่ง DR-DOS บางคำสั่ง หากกำหนดค่านี้ จะแทนที่การตั้งค่า SwitChar ปัจจุบันของระบบ อักขระที่ยอมรับได้มีเพียง " /" (แบบ DOS), " -" (แบบ Unix) และ " [" (แบบ CP/M) โปรดดูCONFIG.SYSคำสั่ง ที่เกี่ยวข้อง SWITCHAR(เพื่อตั้งค่า SwitChar ของระบบ) และ%/%ตัวแปรข้อมูลระบบใน DR-DOS บางฉบับCOMMAND.COM(เพื่อเรียกดูการตั้งค่าปัจจุบันสำหรับงานแบตช์แบบพกพา)
%TASKMGRWINDIR%
ตัวแปรนี้ระบุไดเร็กทอรีที่WindowsSYSTEM.INIที่จะใช้โดยมัลติทาสเกอร์ DR-DOS TASKMGRตั้งอยู่ โดยแทนที่ขั้นตอนเริ่มต้นในการค้นหาไฟล์[ 13 ]
%VER%
ตัวแปรนี้มีเวอร์ชันของระบบปฏิบัติการเพื่อแยกความแตกต่างระหว่างเวอร์ชันต่างๆ ของ DR-DOS ในงานแบตช์และในการแสดงVERคำสั่ง[ 23 ]นอกจากนี้ยังใช้สำหรับ$Vโทเค็นของPROMPTคำสั่งและส่งผลต่อค่าที่ส่งคืนโดยตัวแปรข้อมูล%OS_VERSION%ระบบ ค่าที่รู้จักได้แก่ " 1.0" ( PalmDOS 1.0 ), " 1.2" ( DOS Plus 1.2ในการจำลอง DOS), " 2.0" ( DOS 386 2.0 พร้อมกัน ), " 3.0" ( DOS 386 3.0 พร้อมกัน ), " 3.31" ( DR DOS 3.31 ), " 3.32" ( DR DOS 3.32 ), " 3.33" ( DR DOS 3.33 ), " 3.34" ( DR DOS 3.34 ), " 3.35" ( DR DOS 3.35 ), " 3.40" ( DR DOS 3.40 ), " 3.41" ( DR DOS 3.41 , EZ-DOS 3.41 ), " 3.41T" ( DR DOS 3.41T ), " 4.1" ( PC DOS 4.1 พร้อมกัน ), " 5.0" ( DR DOS 5.0 , DR ผู้ใช้หลายคน DOS 5.0 ), " 5.1" ( Novell DR ผู้ใช้หลายคน DOS 5.1 ), " 6.0" ( DR พร้อมกัน DOS XM 6.0 , DR DOS 6.0 ), " 6.2" ( DR พร้อมกัน DOS XM 6.2 ), " 7" ( Novell DOS 7 , Caldera OpenDOS 7.01 , DR-DOS 7.02 - 7.05 ), " 7.00" ( CCI ผู้ใช้หลายคน DOS 7.00 ), " " 7.07( DR-DOS 7.07 ), " 7.1" ( IMS ผู้ใช้หลายคน DOS 7.1 ), " 7.21" ( CCI Multiuser DOS 7.21 ), [ 25 ] " 7.22" ( CCI Multiuser DOS 7.22 ) ฯลฯ[ 13 ] [ 27 ] [ 25 ]
%YESCHAR%
ตัวแปรนี้สามารถใช้เพื่อกำหนดอักขระที่แสดงโดยคำสั่งบางคำสั่งในข้อความสำหรับ "ใช่" ใน[Y,N]การสอบถาม ซึ่งจะแทนที่ค่าเริ่มต้นของระบบปัจจุบัน (โดยทั่วไปคือ " Y" ในเวอร์ชันภาษาอังกฤษของ DR-DOS) หากมีสตริง จะใช้เฉพาะอักขระตัวแรกที่เป็นตัวพิมพ์ใหญ่เท่านั้น คำสั่งบางคำสั่งยังรองรับพารามิเตอร์บรรทัดคำสั่ง เพื่อถือว่า "ใช่" ในการสอบถามโดยอัตโนมัติ ซึ่งจะระงับการแจ้งเตือนดังกล่าว อย่างไรก็ตาม หาก ใช้/Yพารามิเตอร์ เพื่อระบุอักขระ "ใช่" (ซึ่งจะแทนที่การตั้งค่าใดๆ) การสอบถามจะไม่ถูกระงับ ดู คำสั่ง ที่เกี่ยวข้อง และตัวแปรสภาพแวดล้อมด้วย[ 24 ]/Y:y%YESCHAR%CONFIG.SYSYESCHAR%NOCHAR%
%$CLS%
ตัวแปรนี้กำหนดลำดับการควบคุมที่จะส่งไปยังไดรเวอร์คอนโซลเพื่อล้างหน้าจอเมื่อCLSมีการออกคำสั่ง ซึ่งจะแทนที่ค่าเริ่มต้นภายใน (" ←[2J" ภายใต้ DR-DOS, " ←E" ภายใต้DOS Plus 1.2บนเครื่อง Amstrad [ 21 ]เช่นเดียวกับภายใต้Concurrent DOS , Multiuser DOSและREAL/32สำหรับ เทอร์มินัล VT52หรือ " ←+" ภายใต้ Multiuser DOS สำหรับ เทอร์มินัล ASCII ) [ 25 ]หากไม่ได้กำหนดตัวแปรและไม่ANSI.SYSพบไดรเวอร์คอนโซล DR-DOS COMMAND.COMจะล้างหน้าจอโดยตรงผ่าน ฟังก์ชัน INT 10h/AH=00hBIOSเช่นเดียวกับที่ MS-DOS/PC DOS COMMAND.COMทำ รองรับสัญกรณ์พิเศษ\nnnสำหรับเลขฐานแปดเพื่ออนุญาตให้กำหนดอักขระพิเศษเช่น ESC ( ASCII-27 = "←" = 1Bh = 33o) เป็น fe ในSET $CLS=\033[2Jการส่งแบ็กสแลช (" \") เอง สามารถใช้ " \\" ซ้ำได้ [ 13 ] [ 22 ] [ 25 ]
%$DIR%
รองรับโดยDOS Plusโดยยอมรับค่า "L" (ยาว) หรือ "W" (กว้าง) เพื่อเปลี่ยนเค้าโครงเริ่มต้นของการแสดงรายการไดเร็กทอรีด้วยDIR สามารถแทนที่ได้โดยใช้ตัวเลือกบรรทัดคำสั่งหรือ [ 22 ] [ 21 ] /Lดูตัวแปรสภาพแวดล้อม/Wที่คล้ายกันและตัวเลือกและของ DR-DOS COMMAND.COM ด้วย [ 13 ]%DIRCMD%DIR/C/R
%$PAGE%
รองรับโดยDOS Plusที่ยอมรับค่า " ON" หรือ " OFF" สำหรับการควบคุมการแบ่งหน้า การตั้งค่านี้เป็น " ON" มีผลเช่นเดียวกับการเพิ่ม/Pคำสั่งที่รองรับ (เช่นDIRหรือTYPE ) [ 22 ] [ 21 ]
%$LENGTH%
ใช้โดยDOS Plusเพื่อกำหนดความยาวหน้าจอของคอนโซลเป็นบรรทัด ใช้เพื่อควบคุมในลักษณะพกพาว่าเมื่อใดควรหยุดการแสดงผลหน้าจอชั่วคราวจนกว่าจะมีการกดปุ่มร่วมกับตัว/Pเลือกที่รองรับโดยคำสั่งต่างๆ หรือกับการแบ่งหน้าอัตโนมัติ[ 22 ] [ 21 ]ดูตัวแปรสภาพแวดล้อมที่เกี่ยวข้อง%$WIDTH%และ%DIRSIZE%ตัวแปรเสมือนที่คล้ายกัน%_ROWS%ด้วย
%$WIDTH%
ใช้โดยDOS Plusเพื่อกำหนดความกว้างของหน้าจอคอนโซลเป็นคอลัมน์ ใช้เพื่อควบคุมรูปแบบการแสดงผลหน้าจอของคำสั่งต่างๆ เช่นDIR /Wหรือ ในลักษณะพกพา TYPE filenameได้[ 22 ] [ 21 ]ดูตัวแปรสภาพแวดล้อมที่เกี่ยวข้อง%$LENGTH%และ%DIRSIZE%รวมถึงตัวแปรเสมือนที่คล้ายกัน%_COLUMNS%ด้วย
%$SLICE%
ใช้โดยDOS Plusโดยรับค่าตัวเลขเพื่อควบคุมการแบ่งเวลาพื้นหน้า/พื้นหลังของโปรแกรมมัลติทาสกิ้ง[ 22 ] [ 21 ]ดูคำสั่ง DOS Plus SLICEเพิ่มเติม
%$ON%
ตัวแปรนี้สามารถเก็บลำดับการควบคุมเสริมเพื่อสลับการเน้นข้อความ การย้อนกลับ หรือการระบายสีได้ ใช้เพื่อเน้นหรือควบคุมการแสดงชื่อไฟล์ในคำสั่งต่างๆ เช่นTYPE wildcardตัวอย่างเช่นSET $ON=\033[1mเมื่อ โหลด ANSI.SYSหรือSET $ON=\016สำหรับเครื่องพิมพ์ IBM หรือESC/Pสำหรับสัญกรณ์เลขฐานแปดพิเศษ\nnnที่รองรับ โปรดดู%$CLS%[ 13 ] [ 21 ] แม้ว่าตัวแปรจะไม่ได้กำหนดไว้โดยค่าเริ่มต้นภายใต้ DOS Plus และ DR-DOS แต่ ค่าเริ่มต้นของ Multiuser DOSสำหรับ เทอร์มินัล ASCIISET $ON=\033pจะเท่ากับ[ 22 ] [ 25 ]ดูตัวแปรสภาพแวดล้อมที่เกี่ยวข้อง%$OFF%ด้วย
%$OFF%
ตัวแปรนี้สามารถเก็บลำดับควบคุมเสริมเพื่อปิดการเน้นข้อความ การย้อนกลับ หรือการระบายสีได้ ใช้เพื่อกลับไปยังเอาต์พุตปกติหลังจากแสดงชื่อไฟล์ในคำสั่งต่างๆ เช่นTYPE wildcardเมื่อSET $OFF=\033[0mโหลดANSI.SYSหรือSET $OFF=\024สำหรับเครื่องพิมพ์ IBM หรือESC/Pสำหรับสัญกรณ์เลขฐานแปดพิเศษ\nnnที่รองรับ โปรดดู%$CLS%[ 13 ] [ 21 ] แม้ว่าตัวแปรจะไม่ได้กำหนดไว้โดยค่าเริ่มต้นภายใต้ DOS Plus และ DR-DOS แต่ ค่าเริ่มต้นของ Multiuser DOSสำหรับ เทอร์มินัล ASCIISET $OFF=\033qจะเท่ากับ[ 22 ] [ 25 ]ดูตัวแปรสภาพแวดล้อมที่เกี่ยวข้อง%$ON%ด้วย
%$HEADER%
ตัวแปรนี้สามารถเก็บลำดับการควบคุมเสริมที่ออกก่อนการส่งออกเนื้อหาไฟล์ในคำสั่งต่างๆ เช่นTYPEภายใต้ DR-DOS 7.02 และสูงกว่า สามารถใช้สำหรับการเน้นข้อความ การแบ่งหน้า หรือการจัดรูปแบบ เช่น เมื่อส่งเอาต์พุตไปยังเครื่องพิมพ์ เช่นSET $HEADER=\017สำหรับเครื่องพิมพ์ IBM หรือESC/Pสำหรับสัญกรณ์เลขฐานแปดพิเศษ\nnnที่รองรับ โปรดดู%$CLS%[ 22 ] ดูตัวแปรสภาพแวดล้อมที่เกี่ยวข้อง%$FOOTER%ด้วย
%$FOOTER%
ตัวแปรนี้สามารถเก็บลำดับการควบคุมเสริมที่ออกหลังจากแสดงเนื้อหาไฟล์ในคำสั่งต่างๆ เช่นTYPEภายใต้ DR-DOS 7.02 และสูงกว่า ใช้เพื่อกลับไปยังรูปแบบเอาต์พุตปกติ เช่นSET $FOOTER=\022\014ในตัวอย่างเครื่องพิมพ์ข้างต้น สำหรับสัญกรณ์เลขฐานแปดพิเศษ\nnnที่รองรับ โปรดดู%$CLS%[ 22 ] ดูตัวแปรสภาพแวดล้อมที่เกี่ยวข้อง%$HEADER%ด้วย

Datalight ROM-DOS รองรับ ตัวแปรสภาพแวดล้อมมาตรฐานเพิ่มเติมอีกหลายตัวรวมถึง:

%DIRSIZE%
ตัวแปรนี้ใช้เพื่อกำหนดขนาดหน้าจอที่ไม่เป็นมาตรฐานrows[,cols]สำหรับDIRตัวเลือก/Pและ/W(คล้ายกับ%$LENGTH%และ%$WIDTH%ภายใต้ DOS Plus) [ 20 ]
%NEWFILE%
ตัวแปรนี้จะถูก ตั้งค่าโดยอัตโนมัติเป็นพารามิเตอร์แรกที่กำหนดให้กับคำสั่ง CONFIG.SYS NEWFILE [ 20 ]

%TZ%, %COMM%, %SOCKETS%, %HTTP_DIR%, %HOSTNAME%และ%FTPDIR%ยังถูกใช้โดย ROM-DOS ด้วย[ 20 ]

โอเอส/2

%BEGINLIBPATH%
ประกอบด้วยรายการไดเร็กทอรีที่คั่นด้วยเครื่องหมายเซมิโคลอน ซึ่งจะถูกค้นหาไฟล์DLL ก่อนไดเร็กทอรีที่กำหนดโดย%LIBPATH%ตัวแปร (ซึ่งตั้งค่าระหว่างการเริ่มต้นระบบด้วยคำสั่ง พิเศษ CONFIG.SYSLIBPATH ) สามารถระบุไดเร็กทอรีสัมพัทธ์ได้ที่นี่ รวมถึง " ." สำหรับไดเร็กทอรีการทำงานปัจจุบัน ดูตัวแปรสภาพแวดล้อมที่เกี่ยวข้อง%ENDLIBPATH%เพิ่มเติม
%ENDLIBPATH%
รายการไดเร็กทอรีที่จะค้นหาไฟล์ DLLเช่น%BEGINLIBPATH%แต่จะค้นหาหลังจากรายการไดเร็กทอรีใน%LIBPATH%.

วินโดวส์

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

%APPDATA%
ประกอบด้วยเส้นทางแบบเต็มไปยัง ไดเร็กทอรี ข้อมูลแอปพลิเคชันของผู้ใช้ที่เข้าสู่ระบบ ใช้งานไม่ได้บน Windows NT 4.0 SP6 UK
%LOCALAPPDATA%
ตัวแปรนี้คือไฟล์ข้อมูลภายในเครื่องของแอปพลิเคชันการใช้งานรวมถึงการจัดเก็บธีมเดสก์ท็อปการรายงานข้อผิดพลาดของ Windowsการแคช และโปรไฟล์ของเว็บเบราว์เซอร์
%ComSpec%/%COMSPEC%
ตัวแปร นี้%ComSpec%เก็บเส้นทางแบบเต็มไปยังตัวประมวลผลคำสั่ง ในระบบปฏิบัติการตระกูล Windows NT จะเป็นcmd.exe ในขณะที่ในWindows 9xจะ%COMSPEC%เป็นCOMMAND.COM
%OS%
ตัวแปร%OS%ประกอบด้วยชื่อเชิงสัญลักษณ์ของตระกูลระบบปฏิบัติการเพื่อแยกความแตกต่างระหว่างชุดคุณสมบัติที่แตกต่างกันในงานแบตช์มีลักษณะคล้ายกับตัวแปรสภาพแวดล้อมที่มีชื่อเดียวกัน%OS%ซึ่งพบในระบบปฏิบัติการที่เกี่ยวข้องกับ DOS ทั้งหมดที่มีต้นกำเนิดจากDigital Researchเช่น Concurrent DOS, Multiuser DOS , REAL/32, DOS Plus , DR DOS , Novell DOS และ OpenDOS %OS%โดยจะเก็บสตริง " Windows_NT" เสมอในตระกูล Windows NT [ 29 ]
%PATH%
ตัวแปรนี้ประกอบด้วยรายการไดเร็กทอรีที่คั่นด้วยเครื่องหมายเซมิโคลอน (ห้ามเว้นวรรค) ซึ่งตัวแปลคำสั่งจะค้นหาไฟล์ปฏิบัติการที่ตรงกับคำสั่งที่กำหนด ตัวแปรสภาพแวดล้อมที่แสดงเส้นทางอาจซ้อนอยู่ภายใน%PATH%ตัวแปรนี้ได้ แต่เพียงระดับเดียวเท่านั้น หากตัวแปรสภาพแวดล้อมย่อยที่แสดงเส้นทางนี้มีตัวแปรสภาพแวดล้อมที่แสดงเส้นทางอยู่แล้ว%PATH%จะไม่สามารถขยายได้อย่างถูกต้องในการแทนที่ตัวแปร เทียบเท่ากับตัวแปรUnix$PATH
%PROCESSOR_ARCHITECTURE%, %PROCESSOR_ARCHITEW6432%, %PROCESSOR_IDENTIFIER%, %PROCESSOR_LEVEL%,%PROCESSOR_REVISION%
ตัวแปรเหล่านี้มีรายละเอียดเกี่ยวกับซีพียูซึ่งจะถูกกำหนดในระหว่างการติดตั้งระบบ
%PUBLIC%
ตัวแปร%PUBLIC%(ที่เพิ่มเข้ามาใน Vista) ชี้ไปยัง ไดเร็กทอรีโปรไฟล์ผู้ใช้ สาธารณะ (เสมือน) " C:\Users\Public"
%ProgramFiles%, %ProgramFiles(x86)%,%ProgramW6432%
ตัวแปร%ProgramFiles%ชี้ไปยัง ไดเร็กทอรี Program Filesซึ่งเก็บโปรแกรมที่ติดตั้งทั้งหมดของ Windows และโปรแกรมอื่นๆ ค่าเริ่มต้นในระบบภาษาอังกฤษคือ " C:\Program Files" ใน Windows เวอร์ชัน 64 บิต (XP, 2003, Vista) ยังมี%ProgramFiles(x86)%ซึ่งมีค่าเริ่มต้นเป็น " C:\Program Files (x86)" และ%ProgramW6432%ซึ่งมีค่าเริ่มต้นเป็น " C:\Program Files" ค่า%ProgramFiles%เองขึ้นอยู่กับว่ากระบวนการที่ร้องขอตัวแปรสภาพแวดล้อมนั้นเป็น 32 บิตหรือ 64 บิต (สิ่งนี้เกิดจากการเปลี่ยนเส้นทางWindows บน Windows 64 บิต[ 30 ] )
%CommonProgramFiles%, %CommonProgramFiles(x86)%,%CommonProgramW6432%
ตัวแปรนี้ชี้ไปยัง ไดเร็กทอรีย่อย Common Filesภายใน ไดเร็กทอรี Program Filesค่าเริ่มต้นในระบบภาษาอังกฤษคือ " C:\Program Files\Common Files" ใน Windows เวอร์ชัน 64 บิต (XP, 2003, Vista) ยังมี%ProgramFiles(x86)%ซึ่งมีค่าเริ่มต้นเป็น " C:\Program Files (x86)" และ%ProgramW6432%ซึ่งมีค่าเริ่มต้นเป็น " C:\Program Files" %ProgramFiles%ค่าของตัวแปรนี้ขึ้นอยู่กับว่ากระบวนการที่ร้องขอตัวแปรสภาพแวดล้อมนั้นเป็น 32 บิตหรือ 64 บิต (ซึ่งเกิดจาก การเปลี่ยนเส้นทาง 64 บิตของ Windows บน Windows )
%OneDrive%
ตัวแปร นี้%OneDrive%เป็นตัวแปรสภาพแวดล้อมเฉพาะระบบที่พบใน Windows NT และระบบปฏิบัติการที่พัฒนาต่อยอดจาก Windows NT ค่าของตัวแปรนี้คือพาธของตำแหน่งที่ตั้งของไดเร็กทอรี OneDrive (หากติดตั้งและตั้งค่าไว้) %OneDrive%โดยส่วนใหญ่ค่าของตัวแปรนี้คือ " C:\Users\{Username}\OneDrive\"
%SystemDrive%
ตัวแปร นี้%SystemDrive%เป็นตัวแปรสภาพแวดล้อมเฉพาะระบบที่พบใน Windows NT และระบบปฏิบัติการที่พัฒนาต่อยอดจาก Windows NT ค่าของตัวแปรนี้คือไดรฟ์ที่ติดตั้งไดเร็กทอรีระบบ%SystemDrive%โดยส่วนใหญ่ค่าของตัวแปรนี้คือ " C:"
%SystemRoot%
ตัวแปร นี้%SystemRoot%เป็นตัวแปรสภาพแวดล้อมระดับระบบพิเศษที่พบในระบบปฏิบัติการตระกูล Windows NT ค่าของมันคือตำแหน่งของไดเร็กทอรีระบบ รวมถึงไดรฟ์และพาธ ไดรฟ์จะเหมือนกับ%SystemDrive%และพาธเริ่มต้นในการติดตั้งใหม่จะขึ้นอยู่กับเวอร์ชันของระบบปฏิบัติการ โดยค่าเริ่มต้น:
%windir%
ตัวแปรนี้ชี้ไปยัง ไดเร็กทอรี Windows (ในระบบปฏิบัติการตระกูล Windows NT ตัวแปรนี้จะเหมือนกับ%SystemRoot%ตัวแปร ) โดยปกติแล้ว Windows 9598และWindows MEจะติดตั้งอยู่ใน " C:\Windows" สำหรับ Windows เวอร์ชันอื่นๆ โปรดดู%SystemRoot%รายละเอียดด้านบน

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

%ALLUSERSPROFILE%( %PROGRAMDATA%ตั้งแต่ Windows Vista เป็นต้นมา)
ตัวแปรนี้จะขยายเป็นเส้นทางแบบเต็มไปยัง ไดเร็กทอรีโปรไฟล์ ผู้ใช้ทั้งหมดโปรไฟล์นี้ประกอบด้วยทรัพยากรและการตั้งค่าที่บัญชีระบบทั้งหมดใช้ลิงก์ทางลัด ที่คัดลอกไปยังไดเร็กทอรี เมนูเริ่มต้นหรือเดสก์ท็อป " ผู้ใช้ทั้งหมด " จะปรากฏใน เมนูเริ่มต้นหรือเดสก์ท็อปของผู้ใช้แต่ละคนตามลำดับ
%USERDOMAIN%
ชื่อของเวิร์กกรุ๊ปหรือโดเมน Windowsที่ผู้ใช้ปัจจุบันสังกัดอยู่ ตัวแปรที่เกี่ยวข้อง%LOGONSERVER%จะเก็บชื่อโฮสต์ของเซิร์ฟเวอร์ที่ตรวจสอบความถูกต้องของข้อมูลประจำตัวการเข้าสู่ระบบ (ชื่อผู้ใช้และรหัสผ่าน) ของผู้ใช้ปัจจุบัน สำหรับพีซีที่บ้านและพีซีในเวิร์กกรุ๊ป เซิร์ฟเวอร์ที่ตรวจสอบความถูกต้องมักจะเป็นตัวพีซีเอง สำหรับพีซีในโดเมน Windows เซิร์ฟเวอร์ที่ตรวจสอบความถูกต้องคือตัวควบคุมโดเมน (ตัวควบคุมโดเมนหลัก หรือ PDC ในโดเมนที่ใช้ Windows NT 4)
%USERPROFILE%
ตัวแปรสภาพแวดล้อมเฉพาะระบบที่พบใน Windows NT และระบบปฏิบัติการที่พัฒนาต่อยอดจาก Windows NT ค่าของตัวแปรนี้คือตำแหน่งของไดเร็กทอรีโปรไฟล์ของผู้ใช้ปัจจุบัน ซึ่งเป็นที่ตั้งของรีจิสทรีฮิฟ HKCU ของผู้ใช้นั้น ( NTUSER) ผู้ใช้ยังสามารถใช้%USERNAME%ตัวแปรนี้เพื่อระบุตัวตนการเข้าสู่ระบบของผู้ใช้ที่ใช้งานอยู่ได้ อีกด้วย

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

ค่าเริ่มต้น

ตารางต่อไปนี้แสดงค่าเริ่มต้นทั่วไปของตัวแปรสภาพแวดล้อมบางตัวใน Windows เวอร์ชันภาษาอังกฤษ ซึ่งสามารถเรียกดูได้จากไฟล์CMD.

(ตัวแปรบางส่วนเหล่านี้ถูกกำหนดไว้เมื่อทำงานCOMMAND.COMภายใต้ Windows เช่นกัน แต่มีความแตกต่างกันในรายละเอียดที่สำคัญบางประการ: ภายใต้COMMAND.COMWindows ชื่อของตัวแปรสภาพแวดล้อมจะถูกเขียนด้วยตัวพิมพ์ใหญ่เสมอ ตัวแปรบางตัว แต่ไม่ใช่ทั้งหมด จะมีชื่อไฟล์แบบสั้น8.3แทนที่จะเป็นชื่อไฟล์แบบยาวในขณะที่ตัวแปรบางตัวที่มีอยู่ในCMDสภาพแวดล้อมหายไป นอกจากนี้ยังมีตัวแปรบางตัวที่เฉพาะเจาะจงสำหรับCOMMANDสภาพแวดล้อมนี้ด้วย)

ตัวแปร เฉพาะพื้นที่ ระบบปฏิบัติการ Windows XP (CMD) ระบบปฏิบัติการ Windows Vista และเวอร์ชันที่ใหม่กว่า (CMD)
%ALLUSERSPROFILE% [ 31 ]ใช่ C:\เอกสารและการตั้งค่า\ผู้ใช้ทั้งหมดC:\ProgramData [ 31 ]
%APPDATA% [ ​​31 ]ใช่ C:\เอกสารและการตั้งค่า\%USERNAME%\ข้อมูลแอปพลิเคชันC:\Users\%USERNAME%\AppData\Roaming [ 31 ]
%CommonProgramFiles% [ 31 ]ใช่ C:\Program Files\Common FilesC:\Program Files\Common Files [ 31 ]
%CommonProgramFiles(x86)% [ 31 ]ใช่ C:\Program Files (x86)\Common Files (เฉพาะในเวอร์ชัน 64 บิต)C:\Program Files (x86)\Common Files (เฉพาะในเวอร์ชัน 64 บิต) [ 31 ]
%CommonProgramW6432% [ 31 ]ใช่ %CommonProgramW6432% (ไม่รองรับ และไม่สามารถแทนที่ด้วยค่าใดๆ ได้)C:\Program Files\Common Files (เฉพาะในเวอร์ชัน 64 บิต) [ 31 ]
%ชื่อคอมพิวเตอร์%เลขที่ {ชื่อคอมพิวเตอร์} {ชื่อคอมพิวเตอร์}
%ComSpec%เลขที่ C:\Windows\System32\cmd.exeC:\Windows\System32\cmd.exe
%โฮมไดรฟ์% [ 31 ]เลขที่ ซี: C: [ 31 ]
%HOMEPATH% [ 31 ]ใช่ \เอกสารและการตั้งค่า\%ชื่อผู้ใช้%\Users\%USERNAME% [ 31 ]
%LOCALAPPDATA% [ ​​31 ]ใช่ %LOCALAPPDATA% (ไม่รองรับ และไม่สามารถแทนที่ด้วยค่าใดๆ ได้)C:\Users\%USERNAME%\AppData\Local [ 31 ]
%LOGONSERVER%เลขที่ \\{domain_logon_server}\\{domain_logon_server}
%เส้นทาง%ใช่ C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;{รวมถึงพาธของโปรแกรม}C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;{รวมถึงพาธของโปรแกรม}
%PATHEXT%เลขที่ .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.WSF;.WSH .com;.exe;.bat;.cmd;.vbs;.vbe;.js;.jse;.wsf;.wsh;.msc
%ProgramData% [ 31 ]ใช่ %ProgramData% (ไม่รองรับ และไม่สามารถแทนที่ด้วยค่าใดๆ ได้)%SystemDrive%\ProgramData [ 31 ]
%ProgramFiles% [ 31 ]ใช่ %SystemDrive%\Program Files%SystemDrive%\Program Files [ 31 ]
%ProgramFiles(x86)% [ 31 ]ใช่ %SystemDrive%\Program Files (x86) (เฉพาะในเวอร์ชัน 64 บิต)%SystemDrive%\Program Files (x86) (เฉพาะในเวอร์ชัน 64 บิต) [ 31 ]
%ProgramW6432% [ 31 ]ใช่ %ProgramW6432% (ไม่รองรับ และไม่สามารถแทนที่ด้วยค่าใดๆ ได้)%SystemDrive%\Program Files (เฉพาะในเวอร์ชัน 64 บิต) [ 31 ]
%PROMPT%เลขที่ โค้ดสำหรับรูปแบบพร้อมท์คำสั่งปัจจุบัน โดยปกติจะเป็นแบบนี้$P$Gโค้ดสำหรับรูปแบบพร้อมท์คำสั่งปัจจุบัน โดยปกติจะเป็นแบบนี้$P$G
%PSModulePath%%PSModulePath% (ไม่รองรับ และไม่สามารถแทนที่ด้วยค่าใดๆ ได้)%SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\
%สาธารณะ% [ 31 ]ใช่ %PUBLIC% (ไม่รองรับ และไม่สามารถแทนที่ด้วยค่าใดๆ ได้)%SystemDrive%\Users\Public [ 31 ]
%SystemDrive% [ 31 ]เลขที่ ซี: C: [ 31 ]
%SystemRoot% [ 31 ]เลขที่ ไดเร็กทอรี Windows ซึ่งโดยปกติคือC:\WindowsเดิมคือC:\WINNT%SystemDrive%\Windows [ 31 ]
%TEMP% [ 31 ]และ%TMP% [ 31 ]ใช่ %SystemDrive%\Documents and Settings\%USERNAME%\Local Settings\Temp%SystemRoot%\TEMP (สำหรับตัวแปรสภาพแวดล้อมของระบบ%TMP%และ%TEMP% ) %USERPROFILE%\AppData\Local\Temp [ 31 ] (สำหรับตัวแปรสภาพแวดล้อมของผู้ใช้%TMP%และ%TEMP% )
%USERDOMAIN%เลขที่ {โดเมนผู้ใช้} {โดเมนผู้ใช้}
%ชื่อผู้ใช้%เลขที่ {ชื่อผู้ใช้} {ชื่อผู้ใช้}
%USERPROFILE% [ 31 ]ใช่ %SystemDrive%\Documents and Settings\%USERNAME%%SystemDrive%\Users\%USERNAME% [ 31 ]
%windir% [ 31 ]เลขที่ %SystemDrive%\WINDOWS%SystemDrive%\Windows [ 31 ]

ในรายการนี้ ไม่มีตัวแปรสภาพแวดล้อมใดที่อ้างอิงถึงตำแหน่งของ ไดเร็กทอรี My Documents ของผู้ใช้ ดังนั้นจึงไม่มีวิธีการมาตรฐานในการตั้งค่าไดเร็กทอรีหลักของโปรแกรมให้เป็นไดเร็กทอรี My Documents

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

ตัวประมวลผลคำสั่งใน DOS และ Windows ยังรองรับตัวแปรสภาพแวดล้อมเสมือน (pseudo-environment variables) ด้วย ค่าเหล่านี้จะถูกดึงมาเหมือนกับตัวแปรสภาพแวดล้อม แต่ไม่ได้ถูกจัดเก็บไว้ในสภาพแวดล้อมจริง ๆ แต่จะถูกคำนวณเมื่อมีการร้องขอ

ดีเอส

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

พารามิเตอร์ทดแทนหรือพารามิเตอร์ที่สามารถทดแทนได้ (ศัพท์เฉพาะของ Microsoft / IBM) หรือที่รู้จักกันในชื่อตัวแปรทดแทน (ศัพท์เฉพาะของ Digital Research / Novell / Caldera) [ 23 ]หรือพารามิเตอร์ไฟล์แบตช์ (ศัพท์เฉพาะของ JP Software) [ 12 ]%1 .. %9และ%0สามารถใช้เพื่อเรียกพารามิเตอร์การเรียกใช้ของแบตช์จ็อบ ดูSHIFT. ในแบตช์จ็อบ พารามิเตอร์เหล่านี้สามารถเรียกได้เหมือนกับตัวแปรสภาพแวดล้อม แต่ไม่ได้จัดเก็บไว้ในสภาพแวดล้อมจริง ๆ

โปรเซสเซอร์บรรทัดคำสั่งบางตัว (เช่นDR -DOSCOMMAND.COM [ 23 ] Multiuser DOSMDOS.COM / TMP.EXE(Terminal Message Process), JP Software 4DOS , 4OS2 , Take Command (เดิมคือ 4NT)และ Windows cmd.exe ) รองรับตัวแปรสภาพแวดล้อมเสมือนประเภทหนึ่งที่เรียกว่าตัวแปรข้อมูลระบบ (ศัพท์เฉพาะของ Novell / Caldera) [ 23 ]หรือตัวแปรภายใน (ศัพท์เฉพาะของ JP Software) [ 12 ]ซึ่งสามารถใช้เพื่อเรียกข้อมูลต่างๆ ที่อาจเป็นแบบไดนามิก แต่อ่านได้อย่างเดียวเกี่ยวกับระบบที่กำลังทำงานในงานแบบแบตช์ ค่าที่ส่งคืนแสดงถึงสถานะของระบบในขณะที่ตัวแปรเหล่านี้ถูกสอบถาม กล่าวคือ การอ่านหลายครั้งติดต่อกันอาจส่งคืนค่าที่แตกต่างกันแม้ภายในคำสั่งเดียวกัน การสอบถามไม่มีผลโดยตรงต่อระบบ เนื่องจากไม่ได้จัดเก็บไว้ในสภาพแวดล้อม จึงไม่แสดงรายการโดยSETและไม่มีอยู่สำหรับโปรแกรมภายนอกที่จะเรียกใช้งานได้ หากมีการกำหนดตัวแปรสภาพแวดล้อมจริงที่มีชื่อเดียวกัน ตัวแปรนั้นจะมีความสำคัญเหนือกว่าตัวแปรที่เกี่ยวข้องจนกว่าจะลบตัวแปรสภาพแวดล้อมนั้นอีกครั้ง ตัวแปรเหล่านี้ไม่คำนึงถึงตัวพิมพ์ใหญ่เล็ก แม้ว่าตัวแปรดังกล่าวเกือบทั้งหมดจะมีคำนำหน้าด้วยเครื่องหมายขีดล่าง (" _") ตามธรรมเนียมของ 4DOS เป็นต้น (fe %_SECOND%) [ 12 ]แต่ใน DR-DOS จะไม่เป็นเช่นนั้นCOMMAND.COM(fe %OS_VERSION%)

นอกจากนี้ 4DOS, 4OS2, 4NT และ Take Command ยังรองรับฟังก์ชันที่เรียกว่าฟังก์ชันตัวแปร [ 12 ] รวมถึงฟังก์ชันที่ผู้ใช้กำหนดได้ ฟังก์ชัน เหล่านี้ทำงานเหมือนกับตัวแปรภายในแต่สามารถรับพารามิเตอร์เสริม (fe %@EVAL[]%) และอาจเปลี่ยนแปลงสถานะของระบบได้ขึ้นอยู่กับฟังก์ชันของฟังก์ชันนั้น

ตัวแปรข้อมูลระบบที่รองรับโดย DR-DOS COMMAND.COM:

%AM_PM%
ตัวแปรเสมือนนี้จะส่งคืนสถานะก่อนหรือหลังเที่ยงของเวลาปัจจุบัน สตริงที่ส่งคืนจะขึ้นอยู่กับเวอร์ชันเฉพาะภาษาของ DR-DOS เช่น " " amหรือ " pm" ในเวอร์ชันภาษาอังกฤษ มันคล้ายกับตัวแปรระบุตัวตน ที่มีชื่อเดียวกัน ในสคริปต์การเข้าสู่ระบบของ Novell NetWare
%DAY%
ตัวแปรเสมือนนี้จะส่งคืนจำนวนวันของวันที่ปัจจุบันในรูปแบบตัวเลข 2 หลัก โดยมีเลขศูนย์นำหน้า เช่น " 01".. 31" ดูตัวแปรเสมือนที่คล้ายกันได้ที่นี่ มันมีลักษณะคล้ายกับ ตัวแปรระบุตัวตน%_DAY%ที่มีชื่อเดียวกันในสคริปต์การเข้าสู่ระบบของ Novell NetWare
%DAY_OF_WEEK%
ตัวแปรเสมือนนี้จะส่งคืนชื่อวันในสัปดาห์ในรูปแบบ 3 ตัวอักษร สตริงที่ส่งคืนจะขึ้นอยู่กับเวอร์ชันเฉพาะภาษาของ DR-DOS เช่น " " Sun, " " Mon, " Tue", " " Wed, " " Thu, " " Fri, " หรือ " Sat" ในเวอร์ชันภาษาอังกฤษ มันคล้ายกับตัวแปรระบุตัวตน ที่มีชื่อเดียวกัน ในสคริปต์การเข้าสู่ระบบของ Novell NetWare
%ERRORLEVEL%
ในCOMMAND.COMDR-DOS 7.02 และเวอร์ชันที่สูงกว่า ตัวแปรเสมือนนี้จะส่งคืนระดับข้อผิดพลาดล่าสุดที่ส่งคืนโดยโปรแกรมภายนอกหรือRETURNคำสั่ง เช่น " 0".." 255[ 32 ] [ 33 ] ดูตัวแปรเสมือนที่มีชื่อเดียวกัน%ERRORLEVEL%ใน Windows และIF ERRORLEVELคำสั่งเงื่อนไข ด้วย
%ERRORLVL%
ใน DR-DOS 7.02 และเวอร์ชันที่สูงกว่า ตัวแปรเสมือนนี้จะส่งคืนระดับข้อผิดพลาดล่าสุดในรูปแบบ 3 หลักที่มีเลขศูนย์นำหน้า เช่น " 000".. 255" [ 32 ] [ 33 ]ภายใต้Multiuser DOSนี่คือตัวแปรสภาพแวดล้อมจริงที่เชลล์จะอัปเดตโดยอัตโนมัติเป็นรหัสส่งคืนของโปรแกรมที่ออกจากระบบ[ 25 ]ดูตัวแปรเสมือนที่เกี่ยวข้อง%ERRORLEVEL%ภายใต้ DR-DOS และIF ERRORLEVELคำสั่ง ด้วย
%GREETING_TIME%
ตัวแปรเสมือนนี้จะส่งคืนเวลาทักทายประจำวันแบบ 3 ระดับ สตริงที่ส่งคืนจะขึ้นอยู่กับเวอร์ชันเฉพาะภาษาของ DR-DOS เช่น " " morning, " afternoon", หรือ " " ในเวอร์ชันภาษาอังกฤษ มันคล้ายกับ ตัวแปรระบุตัวตนeveningที่มีชื่อเดียวกันในสคริปต์การเข้าสู่ระบบของ Novell NetWare
%HOUR%
ตัวแปรเสมือนนี้จะส่งคืนชั่วโมงของเวลาปัจจุบันในรูปแบบ 12 ชั่วโมงโดยไม่มีเลขศูนย์นำหน้า เช่น " 1".. " มันมีลักษณะคล้ายกับ ตัวแปรระบุตัวตน12ที่มีชื่อเดียวกันในสคริปต์การเข้าสู่ระบบของNovell NetWare
%HOUR24%
ตัวแปรเสมือนนี้จะส่งคืนชั่วโมงของเวลาปัจจุบันในรูปแบบ 24 ชั่วโมง โดยใช้ตัวเลข 2 หลักที่มีเลขศูนย์นำหน้า เช่น " 00".. 23" มีลักษณะคล้ายกับตัวแปรระบุตัวตน ที่มีชื่อเดียวกัน ใน สคริปต์การเข้าสู่ระบบ ของ Novell NetWareดูตัวแปรเสมือนที่คล้ายกันเพิ่มเติมได้ที่%_HOUR%.
%MINUTE%
ตัวแปรเสมือนนี้จะส่งคืนนาทีของเวลาปัจจุบันในรูปแบบตัวเลข 2 หลัก โดยมีเลขศูนย์นำหน้า เช่น " 00".." 59มีลักษณะคล้ายกับตัวแปรระบุตัวตน ที่มีชื่อเดียวกัน ใน สคริปต์การเข้าสู่ระบบ ของ Novell NetWareดูตัวแปรเสมือนที่คล้ายกันเพิ่มเติมได้ที่%_MINUTE%.
%MONTH%
ตัวแปรเสมือนนี้จะส่งคืนเดือนของวันที่ปัจจุบันในรูปแบบ 2 หลัก โดยมีเลขศูนย์นำหน้า เช่น " 01".." 12มีลักษณะคล้ายกับตัวแปรระบุตัวตน ที่มีชื่อเดียวกัน ใน สคริปต์การเข้าสู่ระบบ ของ Novell NetWareดูตัวแปรเสมือนที่คล้ายกันเพิ่มเติมได้ที่%_MONTH%.
%MONTH_NAME%
ตัวแปรเสมือนนี้จะส่งคืนชื่อเดือนของวันที่ปัจจุบัน สตริงที่ส่งคืนจะขึ้นอยู่กับเวอร์ชันเฉพาะภาษาของ DR-DOS เช่น " " January, " February", " March", " " April, " ", " May", " ", " " June, " July", " August" September, " October", หรือ " " ในเวอร์ชันภาษาอังกฤษ มันคล้ายกับ ตัวแปรระบุตัวตนDecemberที่มีชื่อเดียวกันในสคริปต์การเข้าสู่ระบบของ Novell NetWare
%NDAY_OF_WEEK%
ตัวแปรเสมือนนี้จะส่งคืนหมายเลขวันของสัปดาห์ปัจจุบัน เช่น " 1".." 7" (โดย " 1" สำหรับวันอาทิตย์) มันมีลักษณะคล้ายกับตัวแปรระบุตัวตน ที่มีชื่อเดียวกัน ในสคริปต์การเข้าสู่ระบบของNovell NetWare
%OS_VERSION%
ตัวแปรเสมือนนี้จะส่งคืนเวอร์ชันของระบบปฏิบัติการโดยขึ้นอยู่กับการตั้งค่าปัจจุบันของตัวแปรสภาพแวดล้อม%VER%หาก%VER%ไม่ได้กำหนดไว้%OS_VERSION%จะส่งคืนค่า " off" ตัวแปรนี้คล้ายกับตัวแปรระบุตัว ตนที่มีชื่อเดียวกัน ใน สคริปต์การเข้าสู่ระบบ ของ Novell NetWareซึ่งอาจส่งคืนเวอร์ชันสำหรับ DOS เวอร์ชันที่ไม่ใช่ DR-DOS ด้วย
%SECOND%
ตัวแปรเสมือนนี้จะส่งคืนค่าวินาทีของเวลาปัจจุบันในรูปแบบตัวเลข 2 หลัก โดยมีเลขศูนย์นำหน้า เช่น " 00".. 59" มีลักษณะคล้ายกับตัวแปรระบุตัวตน ที่มีชื่อเดียวกัน ใน สคริปต์การเข้าสู่ระบบ ของ Novell NetWareดูตัวแปรเสมือนที่คล้ายกันเพิ่มเติมได้ที่%_SECOND%.
%SHORT_YEAR%
ตัวแปรเสมือนนี้จะส่งคืนปีของวันที่ปัจจุบันในรูปแบบตัวเลข 2 หลัก โดยมีเลขศูนย์นำหน้า เช่น " " 93.." 99", " 00".." 92". มีลักษณะคล้ายกับตัวแปรระบุตัวตน ที่มีชื่อเดียวกัน ในสคริปต์การเข้าสู่ระบบ ของ Novell NetWare
%YEAR%และ%_YEAR%
รองรับตั้งแต่Novell DOS 7ตัวแปร%YEAR%เสมือนจะส่งคืนปีของวันที่ปัจจุบันในรูปแบบ 4 หลัก เช่น " 1980".." 2099". มันคล้ายกับตัวแปรระบุตัวตน ที่มีชื่อเดียวกัน ใน สคริปต์การเข้าสู่ระบบ ของ Novell NetWare DR-DOS 7.02 และเวอร์ชันที่สูงกว่าถูกเพิ่มเข้ามา%_YEAR%เพื่อความเข้ากันได้กับ4DOSโดยส่งคืนค่าเดียวกัน[ 12 ]
%/%
ในCOMMAND.COMDR-DOS 7.02 และเวอร์ชันที่สูงกว่า ตัวแปรเสมือนนี้จะส่งคืน การตั้งค่า SwitChar ปัจจุบัน ของระบบ ไม่ว่าจะเป็น " /" (แบบ DOS) หรือ " -" (แบบ Unix) [ 34 ] [ 35 ]CONFIG.SYS ดู คำสั่งSWITCHAR%SWITCHAR% ที่เกี่ยวข้อง และตัวแปรสภาพแวดล้อมด้วย
%_CODEPAGE%
ตัวแปรเสมือนนี้จะส่งคืนหน้าโค้ดปัจจุบันของระบบ(" ".." ") เช่น " ", " ", " " ตัวแปรนี้ได้รับการแนะนำครั้งแรกโดย 4DOS [ 12 ]แต่1ก็65533มี437ให้850ใช้858งานได้ตั้งแต่DR - DOS COMMAND.COM7.02 ดูCHCPคำสั่ง เพิ่มเติมด้วย
%_COLUMNS%
ตัวแปรเสมือนนี้จะส่งคืนจำนวนคอลัมน์หน้าจอปัจจุบันโดยขึ้นอยู่กับโหมดการแสดงผล เช่น " 40", " 80", " 132" เป็นต้น ตัวแปรนี้ได้รับการแนะนำครั้งแรกโดย4DOS [ 12 ]แต่ก็มีให้ใช้งานได้ ตั้งแต่ DR-DOS 7.02 เป็นต้น ไปCOMMAND.COMดูตัวแปรสภาพแวดล้อมที่คล้ายกัน%$WIDTH%ภายใต้ DOS Plus ด้วย
%_COUNTRY%
ตัวแปรเสมือนนี้จะส่งคืนรหัสประเทศ ปัจจุบันของระบบ (" 1".." 65534") เช่น " 1" สำหรับสหรัฐอเมริกา " " 44สำหรับสหราชอาณาจักร " " 49สำหรับเยอรมนี " 20049" พร้อมISO 8601 " 21049" พร้อม ISO 8601 และการสนับสนุนยูโร[ 35 ] [ 36 ]ตัวแปรนี้ได้รับการแนะนำครั้งแรกโดย4DOS [ 12 ]แต่ก็มีให้ใช้งานตั้งแต่ DR-DOS 7.02 ดูคำสั่งเพิ่มเติมด้วยCOMMAND.COMCONFIG.SYSCOUNTRY
%_DAY%
ตัวแปรเสมือนนี้จะส่งคืนจำนวนวันของวันที่ปัจจุบันโดยไม่มีเลขศูนย์นำหน้า เช่น " 1".." 31". ตัวแปรนี้ได้รับการแนะนำครั้งแรกโดย4DOS [ 12 ] แต่ก็มีให้ใช้งานได้ตั้งแต่ DR-DOS 7.02 ดูตัวแปรเสมือนที่คล้ายกันด้วยCOMMAND.COM%DAY%
%_HOUR%
ตัวแปรเสมือนนี้จะส่งคืนชั่วโมงของเวลาปัจจุบันในรูปแบบ 24 ชั่วโมงโดยไม่มีเลขศูนย์นำหน้า เช่น " "0 .." 23". ตัวแปรนี้ได้รับการแนะนำครั้งแรกโดย4DOS [ 12 ]แต่ก็มีให้ใช้งานได้ตั้งแต่ DR-DOS 7.02 ดูตัวแปรเสมือนที่คล้ายกันด้วยCOMMAND.COM%HOUR24%
%_MINUTE%
ตัวแปรเสมือนนี้จะส่งคืนนาทีของเวลาปัจจุบันโดยไม่มีเลขศูนย์นำหน้า เช่น " 0".." 59". ตัวแปรนี้ได้รับการแนะนำครั้งแรกโดย4DOS [ 12 ] แต่ก็มีให้ใช้งานได้ตั้งแต่ DR-DOS 7.02 ดูตัวแปรเสมือนที่คล้ายกันด้วยCOMMAND.COM%MINUTE%
%_MONTH%
ตัวแปรเสมือนนี้จะส่งคืนเดือนของวันที่ปัจจุบันโดยไม่มีเลขศูนย์นำหน้า เช่น " 1".." 12". ตัวแปรนี้ได้รับการแนะนำครั้งแรกโดย4DOS [ 12 ] แต่ก็มีให้ใช้งานได้ตั้งแต่ DR-DOS 7.02 ดูตัวแปรเสมือนที่คล้ายกันด้วยCOMMAND.COM%MONTH%
%_ROWS%
ตัวแปรเสมือนนี้ จะส่งคืนจำนวนแถวหน้าจอปัจจุบันโดยขึ้นอยู่กับโหมดการแสดงผล เช่น " 25", " 43", " 50" เป็นต้น ตัวแปรนี้ได้รับการแนะนำครั้งแรกโดย4DOS [ 12 ]แต่ก็มีให้ใช้งานได้COMMAND.COMตั้งแต่ DR-DOS 7.02 ดูตัวแปรสภาพแวดล้อมที่คล้ายกัน%$LENGTH%ภายใต้ DOS Plus
%_SECOND%
ตัวแปรเสมือนนี้จะส่งคืนวินาทีของเวลาปัจจุบันโดยไม่มีเลขศูนย์นำหน้า เช่น " 0".." 59". ตัวแปรนี้ได้รับการแนะนำครั้งแรกโดย4DOS [ 12 ] แต่ก็มีให้ใช้งานได้ตั้งแต่ DR-DOS 7.02 ดูตัวแปรเสมือนที่คล้ายกันด้วยCOMMAND.COM%SECOND%

ตัวแปรข้อมูลระบบที่รองรับโดย DR-DOS COMMAND.COMเมื่อมีการโหลดระบบเครือข่าย:

%LOGIN_NAME%
ตัวแปรเสมือนนี้จะส่งคืนชื่อผู้ใช้ โดยปกติแล้วจะใช้งานได้กับNETXแต่จะใช้งานได้กับODI / VLMของPersonal NetWare ด้วย เช่นกัน หากไดรฟ์ปัจจุบันเป็นไดรฟ์ที่แมปกับ PNW (มิเช่นนั้นจะส่งคืนสตริงว่าง) โปรดดูตัวแปรสภาพแวดล้อมที่มีชื่อคล้ายกันด้วย%LOGINNAME%
%P_STATION%
ตัวแปรเสมือนนี้จะส่งคืนหมายเลขสถานีทางกายภาพในรูปแบบ " ????????????" ค่าจะขึ้นอยู่กับที่อยู่ MACของอะแดปเตอร์เครือข่าย แต่สามารถเปลี่ยนแปลงได้ มีลักษณะคล้ายกับตัวแปรระบุตัวตน ที่มีชื่อเดียวกัน ในสคริปต์การเข้าสู่ระบบของ Novell NetWare
%STATION%
ตัวแปรเสมือนนี้จะส่งคืนหมายเลขสถานีเชิงตรรกะที่ขึ้นต้นด้วย " 1" สำหรับไคลเอ็นต์รายแรก หมายเลขเหล่านี้ถูกกำหนดโดยเซิร์ฟเวอร์ไฟล์และคงที่ตราบใดที่ การเชื่อมต่อ IPX ยังคงอยู่ มีลักษณะคล้ายกับ ตัวแปรระบุตัวตนที่มีชื่อเดียวกันในสคริปต์การเข้าสู่ระบบของ Novell NetWare
%FULL_NAME%
ตัวแปรเสมือนนี้จะส่งคืนชื่อเต็มของผู้ใช้ที่เข้าสู่ระบบ หากมีข้อมูล มีลักษณะคล้ายกับตัวแปรระบุตัวตน ที่มีชื่อเดียวกัน ใน สคริปต์การเข้าสู่ระบบ ของ Novell NetWareดูตัวแปรเสมือนที่เกี่ยวข้องเพิ่มเติมได้ที่%LOGIN_NAME%.

วินโดวส์

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

โดยทางอ้อมแล้ว คำสั่งเหล่านี้ยังได้รับการสนับสนุนภายใต้ระบบปฏิบัติการ Windows COMMAND.COMซึ่งได้รับการดัดแปลงให้เรียกCMD.EXEใช้คำสั่งเหล่านั้น ภายในระบบ

%CD%
ตัวแปรเสมือนนี้จะขยายไปเป็นไดเร็กทอรีปัจจุบันที่เทียบเท่ากับผลลัพธ์ของคำสั่งCDเมื่อเรียกใช้โดยไม่มีอาร์กิวเมนต์ แม้ว่าชื่อไฟล์ที่ยาวอาจถูกส่งคืนได้ขึ้นCMD.EXEอยู่กับไดเร็กทอรีปัจจุบัน แต่ข้อเท็จจริงที่ว่าไดเร็กทอรีปัจจุบันจะอยู่ในรูปแบบ8.3COMMAND.COM เสมอ จะทำให้ส่งคืนชื่อไฟล์แบบสั้นCOMMAND.COMแม้ว่าCOMMANDจะเรียกใช้ภายในCMDก็ตาม
%CMDCMDLINE%
ตัวแปรเสมือนนี้จะขยายไปเป็นพารามิเตอร์เริ่มต้นดั้งเดิมของCMD.EXEเช่น " C:\Windows\system32\cmd.exe" ภายใต้ระบบของ Windows COMMAND.COMอาจส่งคืนค่าบางอย่างเช่น " C:\Windows\system32\cmd.exe /c ..." เนื่องจากมีCOMMAND.COMการเรียกCMD.EXEใช้ภายใน
%CMDEXTVERSION%
ตัวแปรเสมือนนี้จะขยายไปเป็นเวอร์ชันของส่วนขยายบรรทัดคำสั่งของCMD.EXEหากเปิดใช้งาน (เช่น " 1" ในWindows NT , " 2" ในWindows 2000และWindows XP )
%DATE%
ตัวแปรเสมือนนี้จะขยายไปเป็นวันที่ปัจจุบัน โดยวันที่จะแสดงตามการตั้งค่ารูปแบบวันที่ ของผู้ใช้ปัจจุบัน
%ERRORLEVEL%
ตัวแปรเสมือนนี้จะขยายไปยังระดับข้อผิดพลาดที่ตั้งไว้ล่าสุด ซึ่งเป็นค่าระหว่าง " 0" และ " 255" (โดยไม่มีเลขศูนย์นำหน้า) [ 32 ] [ 37 ] [ 33 ]คำสั่งภายนอกและคำสั่งภายในบางคำสั่งจะตั้งระดับข้อผิดพลาดเมื่อดำเนินการ ดูตัวแปรเสมือนที่มีชื่อเดียวกัน%ERRORLEVEL%ภายใต้ DR-DOS และIF ERRORLEVELคำสั่ง ด้วย
%HIGHESTNUMANODENUMBER%
ตัวแปรเสมือนนี้จะส่งคืนหมายเลขของโหนดNUMA สูงสุด
%RANDOM%
ตัวแปรเสมือนนี้จะส่งคืนตัวเลขสุ่มระหว่าง " 0" และ " 32767"
%TIME%
ตัวแปรเสมือนนี้จะส่งคืนเวลาปัจจุบัน เวลาจะแสดงตามรูปแบบเวลาที่กำหนดโดยผู้ใช้ปัจจุบัน หาก มีการใช้ %TIME%ตัวแปร%DATE%ทั้งสอง จำเป็นต้องอ่านค่าของทั้งสองตัวแปรตามลำดับนี้อย่างรวดเร็ว เพื่อหลีกเลี่ยงปัญหาการเปลี่ยนเวลาเมื่อถึงเที่ยงคืน

เปลือกหอยอื่นๆ

เชลล์แบบ Unix มีตัวแปรที่สร้างขึ้นแบบไดนามิกที่คล้ายกัน โดย bash $RANDOMเป็นตัวอย่างที่รู้จักกันดี อย่างไรก็ตาม เนื่องจากเชลล์เหล่านี้มีแนวคิดเกี่ยวกับตัวแปรโลคอล จึงถูกอธิบายว่าเป็นตัวแปรโลคอลพิเศษแทน[ 38 ]

ดูเพิ่มเติม

หมายเหตุ

  1. โปรแกรมที่ไม่สามารถจัดการกับตัวแปรสภาพแวดล้อมที่มีความยาวเกิน 128 ตัวอักษรได้อย่างถูกต้อง ได้แก่CadStar PCB , Checkit, Computer Select CD-ROM, RenderMan, VINES Network , Windows 3.0และWord สำหรับ Windows 6.0
  2. ^ 4DOSและ MS-DOS 7.0กำหนดความยาวเป็น 127 และแทรก ASCII-13ในตำแหน่งนี้ แต่ ไลบรารีของ Borlandกำหนดความยาวเป็นค่าที่ไม่ถูกต้องคือ 128 และไม่แทรก ASCII-13 สำหรับบรรทัดคำสั่งที่สั้นกว่า 4DOS/ NDOSและ DR-DOS จะแทรก ASCII-0หลัง ASCII-13ด้วย แต่จะไม่ทำเช่นนั้นเมื่อเรียกใช้ผ่านคำสั่ง INSTALL ; MS-DOS ไม่ทำเช่นนั้น

อ่านเพิ่มเติม

  • Chen, Raymond (2010-05-06). "ตัวแปรสภาพแวดล้อม =C: ที่แปลกประหลาดเหล่านี้คืออะไร?" . The New Old Thing . Microsoft . สืบค้นเมื่อ2025-04-03 .
  • environ(7)สภาพแวดล้อมผู้ใช้ –  คู่มือโปรแกรมเมอร์ลินุกซ์ – ภาพรวม ข้อกำหนด และเบ็ดเตล็ด
  • environ(7) –  คู่มือข้อมูลเบ็ดเตล็ดของ FreeBSD
  • environ(7) –  คู่มือข้อมูลเบ็ดเตล็ดเกี่ยวกับDarwinและmacOS
  • environ(7) –  คู่มืออ้างอิงมาตรฐาน สภาพแวดล้อม มาโคร ชุดอักขระ และเบ็ดเตล็ดของ Solaris 11.4
  • "วิกิเกี่ยวกับตัวแปรสภาพแวดล้อม"เก็บถาวรจากต้นฉบับเมื่อวันที่ 27 เมษายน 2562
  • ตัวแปรสภาพแวดล้อมของผู้ใช้
  • แก้ไขข้อผิดพลาดที่ไม่พบไฟล์ setx.exe
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Environment_variable&oldid=1359951097#$HOME "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ตัวแปรสิ่งแวดล้อม

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

ออกแบบ

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

ไวยากรณ์

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

ยูนิกซ์

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